playbook书写规范
shell脚本
转换成yaml文本
总结规范
代码清单4-1,详细解剖代码
playbook限定主机执行范围
用户与权限设置:
--remote-user,这个参数,实际上没有,书上有。后面测试下,有没有???su sudo需要好好研究
三个实战
handlers
playbook中的变量
注册变量
Facts
Vault
条件流程控制
yam语言格式(以奔跑吧,ansible为主):
文档以—-标记文档的开始
号用来表示注释
列表使用减号“-”作为分隔符
字典
拆行 >
key/value的值可同行写也可换行写,同行使用“:”分隔,换行写需要以“-”分隔。?????????????
state=present state=
用户与权限设置:
- —remote-user
在playbook中,如果在hosts字段里没有定义users关键字,那么ansible将会使用你在inventory文件中定义的用户,如果inventory文件中也没有定义用户,ansible讲默认使用当前系统用户身份来通过ssh连接到远程主机,来运行playbook的内容。
ansible-playbook playbook.yml —remote-user=weblogic - —ask-sudo-pass 或 -K
传递sudo密码到远程主机,来保证sudo命令的正常运行。 - —sudo
可以强制所有play都使用sudo用户,同时使用—sudo-user选项指定sudo可以执行哪个用户的权限,如果不指定,则默认以root身份运行。
示例:当前用户tom想以jrry的身份运行playbook:
ansible-playbook playbook.yml —sudo —sudo-user=jrry —ask-sudo-pass
如果有大量的复制或深度递归的文件夹,用synchronize模块来处理
示例一:部署Apache服务
- hosts: all
sudo: yes
tasks:-
name: 安装Apache
yum: name={{item}} state=present
with_items:- httpd
- httpd-devel
-
name: 复制配置文件
copy: src={{item.src}} des={{item.dest}} owner=root group=root mode=0644
with_items:- {
src: "/tmp/htttpd.conf"
dest: "/etc/httpd/conf/httpd.conf"
} - {
src: "/tmp/htttpd-vhosts.conf"
dest: "/etc/httpd/conf/httpd.vhosts.conf"
}
- {
-
name: 检查Apache运行状态
service: name=httpd state=started enable=yes
-
———————————————————————————————————————————————————————-------------------
实战1:ansible部署node.js
- name: ""
hsots: all
tasks:- name: 获取正在运行的node.js app列表
command: forever list
register: forever_list
changed_when: false - name:启动node.js app
command: "forever start {{node_apps_location}}/app/app.js"
when: "forever_list.stdout.fine('{{node_apps_location}}') == -1"
- name: 获取正在运行的node.js app列表
网友评论