9、生成主机文件将一个初始模板文件从http://content.example.com/hosts.j2下载到/home/student/ansible完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与 /etc/hosts 相同创建名为 /home/student/ansible/hosts.yml 的playbook,它将使用此模板在 dev 主机组中的主机上生成文件 /etc/myhosts 。该 playbook 运行后,dev 主机组中主机上的文件/etc/myhosts 应针对每个受管主机包含一行内容:127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.24.1.6 servera.lab1.example.com servera172.24.1.7 serverb.lab1.example.com serverb172.24.1.8 serverc.lab1.example.com serverc172.24.1.9 serverd.lab1.example.com serverd172.24.1.10 bastion.lab1.example.com bastion
解答:[student@workstation ansible]$ wget http://content.example.com/hosts.j2[student@workstation ansible]$ vim hosts.j2127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6{% for host in groups.all %}{{ hostvars[host].ansible_enp1s0.ipv4.address }}{{ hostvars[host].ansible_fqdn }}{{ hostvars[host].ansible_hostname }}{% endfor %}
[student@workstation ansible]$ vim hosts.yml
- name: get all factshosts: all
- name: cp to myhostshosts: devtasks:
- name: cp filetemplate:src: /home/student/ansible/hosts.j2dest: /etc/myhosts
10、修改文件内容按照下方所述,创建一个名为 /home/student/ansible/issue.yml 的 playbook:该 playbook 将在所有清单主机上运行该 playbook 会将 /etc/issue 的内容替换为下方所示的一行文本:在 dev 主机组中的主机上,这行文本显示为:Development在 test 主机组中的主机上,这行文本显示为:Test在 prod 主机组中的主机上,这行文本显示为:Production
解答:
[student@workstation ansible]$ vim issue.yml---- name: modify issuehosts: alltasks:- name: input to issuecopy:content: |{% if 'dev' in group_names %}Development{% elif 'test' in group_names %}Test{% elif 'prod' in group_names %}Production{% endif %}dest: /etc/issue[student@workstation ansible]$ ansible-playbook issue.yml 验证:[root@servera ~]# cat /etc/issueDevelopment[root@serverb ~]# cat /etc/issueTest[root@serverc ~]# cat /etc/issueProduction[root@serverd ~]# cat /etc/issueProduction
11、创建Web内容目录按照下方所述,创建一个名为 /home/student/ansible/webcontent.yml 的 playbook:该 playbook 在 dev 主机组中的受管节点上运行创建符合下列要求的目录 /webdev:所有者为 devops 组具有常规权限:owner=read+write+execute,group=read+write+execute,other=read+execute具有特殊权限: set group ID用符号链接将 /var/www/html/webdev 链接到 /webdev创建文件 /webdev/index.html,其中包含如下所示的单行文本:Development在 dev 主机组中主机上浏览此目录(例如 http://servera.lab.example.com/webdev/ )将生成以下输出:Development解答:
[student@workstation ansible]$ vim webcontent.yml---- name: web stationhosts: devtasks:- name: install httpd firewalldyum:name:- httpd- firewalldstate: present- name: create groupgroup:name: devopsstate: present- name: create /webdevfile:path: /webdevstate: directorygroup: devopsmode: 2775- name: cpcopy:content: Developmentdest: /webdev/index.html- name: set selinux contextsefcontext:target: /webdev(/.*)?setype: httpd_sys_content_t- name: shellshell:cmd: restorecon -Rv /webdev- name: create link to /var/www/html/webdevfile:src: /webdevdest: /var/www/html/webdevstate: link- name: restart httpdservice:name: httpdstate: restartedenabled: yes- name: restart firewalldservice:name: firewalldstate: restartedenabled: yes- name: firewall for httpfirewalld:service: httpstate: enabledpermanent: yesimmediate: yes[student@workstation ansible]$ ansible-playbook webcontent.yml 验证:[student@workstation ansible]$ curl http://servera.lab.example.com/webdev/Development
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-