Ansible角色的一些实战练习 本节主要针对一些服务的部署,来创建出其角色。以方便更快的掌握ansible角色的创建和使用。
练习一 建立memcached角色,并实现将内存的1/4当缓存使用
1.创建角色目录
1 2 3 4 5 6 [root@ansible data] mkdir: created directory ‘roles/memcadhed’ mkdir: created directory ‘roles/memcadhed/templates’ mkdir: created directory ‘roles/memcadhed/tasks’ mkdir: created directory ‘roles/memcadhed/vars’
2.安装memeche获取配置文件
1 2 3 [root@ansible data] [root@ansible data]
3.修改模板文件
1 2 3 4 5 6 7 [root@ansible data] PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="{{ansible_memtotal_mb//4}}" OPTIONS=""
4.在tasks目录下创建各task
1 2 3 4 5 6 7 8 9 10 11 12 [root@ansible data] - name: install yum: name=memcached [root@ansible data] - name: config template: src=memcached.j2 dest=/etc/sysconfig/memcached [root@ansible data] - name: service service: name=memcached state=started
5.在tasks目录下创建执行顺序文件
1 2 3 4 5 6 [root@ansible data] - include: install.yaml - include: config.yaml - include: service.yaml
6.创建调用role文件
1 2 3 4 5 6 7 8 [root@ansible data] --- - hosts: webserver roles: - role: memcached
7.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [root@ansible data] PLAY [webserver] *********************************************************************************************** TASK [Gathering Facts] ***************************************************************************************** ok: [192.168.73.132] ok: [192.168.73.134] ok: [192.168.73.135] TASK [memcached : install] ************************************************************************************* changed: [192.168.73.132] changed: [192.168.73.135] changed: [192.168.73.134] TASK [memcached : config] ************************************************************************************** changed: [192.168.73.132] changed: [192.168.73.134] changed: [192.168.73.135] TASK [memcached : service] ************************************************************************************* changed: [192.168.73.132] changed: [192.168.73.134] changed: [192.168.73.135] PLAY RECAP ***************************************************************************************************** 192.168.73.132 : ok=4 changed=3 unreachable=0 failed=0 192.168.73.134 : ok=4 changed=3 unreachable=0 failed=0 192.168.73.135 : ok=4 changed=3 unreachable=0 failed=0
8.执行roles
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [root@ansible data] PLAY [webserver] *********************************************************************************************** TASK [Gathering Facts] ***************************************************************************************** ok: [192.168.73.132] ok: [192.168.73.134] ok: [192.168.73.135] TASK [memcached : install] ************************************************************************************* changed: [192.168.73.135] changed: [192.168.73.134] changed: [192.168.73.132] TASK [memcached : config] ************************************************************************************** changed: [192.168.73.132] changed: [192.168.73.135] changed: [192.168.73.134] TASK [memcached : service] ************************************************************************************* changed: [192.168.73.132] changed: [192.168.73.135] changed: [192.168.73.134] PLAY RECAP ***************************************************************************************************** 192.168.73.132 : ok=4 changed=3 unreachable=0 failed=0 192.168.73.134 : ok=4 changed=3 unreachable=0 failed=0 192.168.73.135 : ok=4 changed=3 unreachable=0 failed=0
练习(二) 在centos6上时间服务为ntp服务,而在centos7上时间服务为chrony,使用ansible在centos6主机上部署ntp服务,centos7上部署chrony。
1.分别创建ntp和chrony角色目录
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@ansible data] mkdir: created directory ‘roles/ntpd’ mkdir: created directory ‘roles/ntpd/templates’ mkdir: created directory ‘roles/ntpd/tasks’ mkdir: created directory ‘roles/ntpd/vars’ mkdir: created directory ‘roles/ntpd/files’ mkdir: created directory ‘roles/ntpd/handlers’ mkdir: created directory ‘roles/chrony’ mkdir: created directory ‘roles/chrony/templates’ mkdir: created directory ‘roles/chrony/tasks’ mkdir: created directory ‘roles/chrony/vars’ mkdir: created directory ‘roles/chrony/files’ mkdir: created directory ‘roles/chrony/handlers’
2.准备ntpd配置文件
2.1对ntp配置文件修改
1 2 3 4 5 [root@CentOS6 ~] restrict default kod nomodify restrict 192.168.73.0 mask 255.255.255.0 nomodify notrap server 172.22.0.1 iburst
2.2将ntp配置文件存放至role相关目录下
3.准备chrony配置文件
3.1修改配置文件
1 2 3 [root@ansible data] server 192.168.73.132 iburst
3.2将chrony配置文件存放至role相关目录下
4.创建ntpd的tasks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@ansible data] - name: install yum: name=ntp [root@ansible data] - name: config copy: src=ntp.conf dest=/etc/ntp.conf notify: restart service [root@ansible data] - name: service service: name=ntpd state=started [root@ansible data] - include: install.yaml - include: config.yaml - include: service.yaml
5.创建ntpd的handler
1 2 3 4 [root@ansible data] - name: restart service service: name=ntpd state=restarted
6.创建chrony的tasks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@ansible data] - name: install yum: name=chrony [root@ansible data] - name: config copy: src=chrony.conf dest=/etc/chrony.conf notify: restart service [root@ansible data] - name: service service: name=chronyd state=started [root@ansible data] - include: install.yaml - include: config.yaml - include: service.yaml
7.创建chrony的handler
1 2 3 4 [root@ansible data] - name: restart service service: name=chronyd state=restarted
8.创建带条件判断的role调用剧本
1 2 3 4 5 6 7 8 9 10 [root@ansible data] --- - hosts: webserver roles: - role: ntpd when: ansible_distribution_major_version == "6" - role: chrony when: ansible_distribution_major_version == "7"
9.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [root@ansible data] PLAY [webserver] *********************************************************************************************** TASK [Gathering Facts] ***************************************************************************************** ok: [192.168.73.132] ok: [192.168.73.135] ok: [192.168.73.134] TASK [ntpd : install] ****************************************************************************************** skipping: [192.168.73.134] skipping: [192.168.73.135] ok: [192.168.73.132] TASK [ntpd : config] ******************************************************************************************* skipping: [192.168.73.134] skipping: [192.168.73.135] ok: [192.168.73.132] TASK [ntpd : service] ****************************************************************************************** skipping: [192.168.73.134] skipping: [192.168.73.135] changed: [192.168.73.132] TASK [chrony : install] **************************************************************************************** skipping: [192.168.73.132] changed: [192.168.73.134] changed: [192.168.73.135] TASK [chrony : config] ***************************************************************************************** skipping: [192.168.73.132] changed: [192.168.73.135] changed: [192.168.73.134] TASK [chrony : service] **************************************************************************************** skipping: [192.168.73.132] changed: [192.168.73.135] changed: [192.168.73.134] RUNNING HANDLER [ntpd : restart service] *********************************************************************** skipping: [192.168.73.135] skipping: [192.168.73.134] PLAY RECAP ***************************************************************************************************** 192.168.73.132 : ok=4 changed=1 unreachable=0 failed=0 192.168.73.134 : ok=4 changed=3 unreachable=0 failed=0 192.168.73.135 : ok=4 changed=3 unreachable=0 failed=0
10.执行roles
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [root@ansible data] PLAY [webserver] *********************************************************************************************** TASK [Gathering Facts] ***************************************************************************************** ok: [192.168.73.135] ok: [192.168.73.132] ok: [192.168.73.134] TASK [ntpd : install] ****************************************************************************************** skipping: [192.168.73.134] skipping: [192.168.73.135] ok: [192.168.73.132] TASK [ntpd : config] ******************************************************************************************* skipping: [192.168.73.134] skipping: [192.168.73.135] ok: [192.168.73.132] TASK [ntpd : service] ****************************************************************************************** skipping: [192.168.73.134] skipping: [192.168.73.135] ok: [192.168.73.132] TASK [chrony : install] **************************************************************************************** skipping: [192.168.73.132] ok: [192.168.73.135] ok: [192.168.73.134] TASK [chrony : config] ***************************************************************************************** skipping: [192.168.73.132] ok: [192.168.73.135] ok: [192.168.73.134] TASK [chrony : service] **************************************************************************************** skipping: [192.168.73.132] ok: [192.168.73.134] changed: [192.168.73.135] PLAY RECAP ***************************************************************************************************** 192.168.73.132 : ok=4 changed=0 unreachable=0 failed=0 192.168.73.134 : ok=4 changed=0 unreachable=0 failed=0 192.168.73.135 : ok=4 changed=1 unreachable=0 failed=0