1,创建role的目录(根据需要httpd下可以增加你需要的目录)
[root@localhost data]# mkdir -pv /data/roles/httpd/{files,handlers,tasks}
2,在files目录下准备httpd.conf(在本机copy一个)和index.html(手动写一个)文件
[root@localhost files]# ls
httpd.conf index.html
3,在tasks目录下创建安装httpd的yml文件,大概四步五个yml文件,基本上就是一步一个文件
main.yml文件,第一个被执行的yml文件,因为它指定了其他yml文件的执行顺序
[root@localhost files]# cd ../tasks
[root@localhost tasks]# vi main.yml
- include: install.yml
- include: config.yml
- include: index.yml
- include: start.yml
install.yml文件为远端服务器安装httpd
[root@localhost tasks]# vi install.yml
- name: install httpd package
yum: name=httpd
config.yml文件将配置好的httpd配置文件复制到远端服务器,这里我改了监听端口为8080,这个yml文件里加了notify,这样修改配置文件后就可以通知handler来重启服务生效了,handler后面会配置(这里src不需要用绝对路径也可以,因为它自己回去files目录下去寻找)
[root@localhost tasks]# vi config.yml
- name: config file
copy: src=httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart
index.yml文件将网页文件复制到远端服务器
[root@localhost tasks]# vi index.yml
- name: index.html
copy: src=index.html dest=/var/www/html/
start.yml文件启动httpd服务,并设为开启自启
[root@localhost tasks]# vi start.yml
- name: start httpd
service: name=httpd state=started enabled=yes
3,在handlers目录下创建main.yml文件
[root@localhost tasks]# vi ../handlers/main.yml
- name: restart
service: name=httpd state=restarted
4,与roles在同一目录下创建调用httpd role的yml文件(必须和role在同一目录下)
[root@localhost tasks]# cd /data/roles/
[root@localhost roles]# vi httpd_role.yml
---
# httpd role
- hosts: haha
remote_user: root
roles:
- role: httpd
5,检查role,确认没问题后执行role
[root@localhost roles]# ansible-playbook -C /data/roles/httpd_role.yml
[root@localhost roles]# ansible-playbook /data/roles/httpd_role.yml
6,在远端及其看到httpd已经安装上了,并且8080端口也已开启了,真机访问也成功了
[root@localhost ~]# rpm -q httpd
httpd-2.4.6-90.el7.centos.x86_64
[root@localhost ~]# ss -ntul
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:*
udp UNCONN 0 0 ::1:323 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 :::8080 :::*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 100 ::1:25 :::*