好,顺接上文,发现了问题,咱写的文章,既没观赏性,又没技术性,哦豁,完蛋.
不过,既然发现了问题,解决问题就行.
言归正传: 上一篇咱们做了一个ansible的小实验,用的是一条条ansible命令,一个个模块.咱们来总结一下
ansible 10.0.0.2 -m package -a 'name=httpd state=present'
ansible 10.0.0.2 -m fetch -a 'src=/etc/httpd/conf.d/vhost.conf dest=/data'
ansible 10.0.0.2 -m copy -a 'src=/data/10.0.0.2/etc/httpd/conf.d/vhost.conf dest/etc/httpd/conf.d/vhost.conf'ansible 10.0.0.2 -m copy -a 'src=/var/www/html/index.html dest=/var/www/html/index.html'
ansible 10.0.0.2 -m systemd -a 'name=httpd state=started enabled=yes daemon_reload=yes '
不难发现,咱们命令开始都是"ansible 10.0.0.2(目标地址) -m (模块)"
能不能有一样方法,把有共通性的汇聚成一个呢?
vim config-web.yml
- name : play
hosts : 10.0.0.2
tasks :
- name : install web
package : name=httpd state=present- name : fetch httpd.conf from remote host
fetch : src=/etc/httpd/conf.d/vhost.conf dest=/data- name : copy
copy : src=/data/10.0.0.2/etc/httpd/conf.d dest=/etc/httpd/conf.d- name : copy
copy : src=/var/www/html/index.html dest=/var/www/html/index.html- name : start web
systemd : name=httpd state=started enabled=yes daemon_reload=yes
咱们来看看效果,执行config-web.yml.
嘻嘻嘻,大家有没有发现,这就是ansible的灵魂所在!
至于playbook的语法和规则,说起来又是新东西了.今天早上写这个playbook的时候,一直报错,全是红,最开始的"= : " 没注意,空格没注意,hosts一直识别不到,啥错都有.
咱们聊聊排错思路:
- 指定的hosts.
- 标点符号,空格.
- 看看涉及到的文件路径.
都是眼泪,有时间接着更新.
大家有没有发现,这个playbook水平有点低,有点low,来点有技术水平的.
- name : play
hosts : 10.0.0.2
tasks :
- name : install web
package :
name : httpd
state : present- name : fetch httpd.conf from remote host
fetch :
src : /etc/httpd/conf.d/vhost.conf
dest : /data
- name : copy
copy :
src : /data/10.0.0.2/etc/httpd/conf.d
dest : /etc/httpd/conf.d- name : copy
copy :
src : /var/www/html/index.html
dest : /var/www/html/index.html
用yaml语法,注意缩进.
咱们执行试试
ok, 漂亮的完成.