首先在roles下面创建一个目录用来管理httpd这个项目的所有配置,这里创建的目录名为httpd,然后在该目录下创建一个tasks目录用来管理该项目中所用到的任务。
由于在前面的测试中已经安装了httpd服务,所以这里我们先要删除掉原来的服务及其账户。
原有的账户及服务:
#卸载服务
[root@localhost tasks]# ansible wyh-test -m shell -a 'yum -y remove httpd'
#验证已卸载
[root@localhost tasks]# ansible wyh-test -m shell -a 'rpm -q httpd'
#删除账户
[root@localhost tasks]# ansible wyh-test -m user -a 'name=apache state=absent'
准备就绪之后开始创建各个任务的playbook。
[root@localhost tasks]# cat user.yml
- name: create user
user: name=apache system=yes shell=/sbin/nologin
apache的安装我们可以使用yum安装也可以使用编译安装,这里我们尝试用编译安装的方法,将自己创建好的一些配置文件拷贝到被控机器上,所以可以在我们刚才创建的httpd目录下创建一个files目录用来存放文件。
#将本地的httpd原始conf拷贝到files目录下(如果本地没有httpd的话,可以安装一下)
[root@localhost httpd]# cp /etc/httpd/conf/httpd.conf files/
[root@localhost tasks]# cat copyconf.yml
- name: copy files
copy: src=httpd.conf dest=/data/ owner=apache #由于前面已经把conf放到了files目录下,所以这里的src可以直接写文件名
[root@localhost tasks]# cat main.yml
- include: user.yml
- include: copyconf.yml
此时的httpd目录结构:
在roles的同级目录下创建一个总的playbook去调用刚才的这些任务:
[root@localhost ansible]# cat httpd_deploy.yml
- hosts: wyh-test
remote_user: root
roles:
- httpd
执行成功之后进行验证: