目标:
将hosts信息部署到web服务器的index.html文件中,访问web服务器时显示如下信息:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
ansible主机的IP地址
受控主机1的IP地址
受控主机2的IP地址
一、编写template模块执行文件
[root@cent-83master ansible]# vim host.conf.j2 #将http的配置文件使用变量编写到j2文件中
<virtualhost {{ansible_facts.default_ipv4.address}}:80>
servername {{ansible_facts.default_ipv4.address}}
documentroot /var/www/html
</virtualhost>
<directory /var/www/html>
allowoverride none
require all granted
</directory>
将网页主界面的index文件使用变量写入j2文件中
[root@cent-83master ansible]# vim index.html.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for host in groups.all %}
{{hostvars[host].ansible_facts.default_ipv4.adress}} {{hostvars[host].ansible_facts.hostname}}
{% endfor %} #使用循环来获取所有受管主机的主机名,并采用魔法变量来编写要显示的主机和IP
二、编写playbook文件
[root@cent-83master ansible]# vim httpd.yml
---
- name: http service conf play
hosts: all
tasks:
- name: httpd conf template
template:
src: ./host.conf.j2
dest: /etc/httpd/conf.d/host.conf
- name: restarted httpd
service:
name: httpd
stste: restarted
- name: write index.html template
template:
src: ./index.html.j2
dest: /var/www/html/index.html
校验playbook文件
[root@cent-83master ansible]# ansible-playbook --syntax-check httpd.yml
playbook: httpd.yml
[root@cent-83master ansible]#
启动playbook
[root@cent-83master ansible]# ansible-playbook httpd.yml
PLAY [http service conf play] **********************************************************
TASK [Gathering Facts] *****************************************************************
ok: [server83]
ok: [node01]
ok: [node02]
TASK [httpd conf template] *************************************************************
changed: [node01]
changed: [server83]
changed: [node02]
TASK [restarted http] ******************************************************************
changed: [server83]
changed: [node01]
changed: [node02]
TASK [write index.html template] *******************************************************
changed: [node01]
changed: [server83]
changed: [node02]
PLAY RECAP *****************************************************************************
node02 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node01 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server83 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
三、检查执行后的结果
[root@cent-83master ansible]# curl httpd://node01
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.240.132 node01-79
192.168.240.135 server83
192.168.240.133 node02-83
[root@cent-83master ansible]# curl http://node02
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.240.132 node01-79
192.168.240.135 server83
192.168.240.133 node02-83
[root@cent-83master ansible]# curl http://server83
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.240.132 node01-79
192.168.240.135 server83
192.168.240.133 node02-83