本篇文章详细给大家介绍Ansible变量,变量适合管理剧本中每个项目的动态值,或是某些值在多个地方重复使用,如果将此值设置为变量再在其他地方调用会方便许多。会用变量,才算真正会用Ansible,话不多说,直接开始!
变量定义
在测试情况下,可以在命令行中定义变量;当变量较少,不会被其他剧本调用的情况下,可以在剧本头部进行定义;当有较多playbook调用时,可以在文件中定义变量;也可以通过主机清单中定义变量,但是一般不推荐;也可以采取官方推荐的定义方式。一共四种定义方式。
1、命令行定义变量
主机清单的变量会被剧本文件的方式覆盖,这两种方式的变量又会被命令行定义的方式覆盖,命令行可以使用--extra-vars或者-e设置变量
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. tasks: 4. - name: install httpd server 5. yum: 6. name: "{{ web_server }}" 7. [root@Ansible test]# ansible-playbook test.yml -e "web_server=vsftpd" #定义变量并运行 8. 9. [root@Ansible test]# cat test.yml 10. - hosts: web_group 11. tasks: 12. - name: install httpd server 13. yum: 14. name: 15. - "{{ web_server }}" 16. - "{{ db_server }}" 17. [root@Ansible test]# ansible-play test.yml -e "web_server=vsftpd" -e "db_server=mariadb-server" #定义多个变量并运行
2、剧本头部进行定义
1. #1、将一个列表定义在一个变量中 2. [root@Ansible test]# cat test.yml 3. - hosts: web_group 4. vars: 5. packages: 6. - httpd 7. - mariadb-server 8. - php 9. - php-mysql 10. - php-pdo 11. tasks: 12. - name: install httpd .... 13. yum: 14. name: "{{ packages }}" 15. 16. #2、以列表的形式,一个内容定义一个变量 17. [root@Ansible test]# cat test.yml 18. - hosts: web_group 19. vars: 20. - web_server: httpd 21. - db_server: mariadb-server 22. - php_server: php,php-mysql,php-pdo 23. tasks: 24. - name: install httpd .... 25. yum: 26. name: 27. - "{{ web_server }}" 28. - "{{ db_server }}" 29. - "{{ php_server }}" 30. 31. #3、以列表形式,多个内容由多个变量定义,最后拼接调用 32. [root@Ansible test]# cat test.yml 33. - hosts: web_group 34. vars: 35. - ngx_ver: 1.1 36. - ngx_dir: web 37. tasks: 38. - name: touch 39. file: 40. name: /tmp/{{ ngx_dir }}_{{ ngx_ver }} 41. state: touch 42. 43. #获取并调用Ansible内置变量 44. [root@Ansible test]# cat test.yml 45. - hosts: web_group 46. vars: 47. - remote_ip: "{{ ansible_default_ipv4['address'] }}" 48. - remote_hostname: "{{ ansible_fqdn }}" 49. tasks: 50. - name: touch ip file 51. file: 52. path: /root/{{ remote_ip }} 53. state: touch 54. - name: touch hostname file 55. file: 56. path: /root/{{ remote_hostname }} 57. state: touch
3、文件中定义变量
剧本头部定义变量的缺陷是只能当前变量使用,其他文件无法调用该变量文件,我们可以在文件中定义变量解决这个问题。
1. [root@Ansible test]# cat vars1.yml 2. web_server: httpd 3. [root@Ansible test]# cat vars2.yml 4. db_server: mariadb-server 5. [root@Ansible test]# cat test.yml #调用一个文件一个变量 6. - hosts: web_group 7. vars_files: vars1.yml 8. tasks: 9. - name: install httpd mariadb 10. yum: 11. name: "{{ web_server }}" 12. 13. [root@Ansible test]# cat test.yml #调用多个文件多个变量 14. - hosts: web_group 15. vars_files: 16. - vars1.yml 17. - vars2.yml 18. tasks: 19. - name: install httpd mariadb 20. yum: 21. name: 22. - "{{ web_server }}" 23. - "{{ db_server }}"
4、主机清单定义变量
在主机清单中定义变量,主机的变量要高于主机组的变量,所以该方法不推荐使用,容易将环境弄乱。
1. [root@Ansible test]# vim /etc/ansible/hosts 2. [web_group] 3. web01 ansible_ssh_host=10.0.0.7 4. web02 ansible_ssh_host=10.0.0.8 5. [web_group:vars] 6. web_server=httpd 7. index_file=index.html 8. 9. - hosts: web_group 10. tasks: 11. - name: Install httpd Server 12. yum: 13. name: "{{ web_server }}" 14. - name: Create Index File 15. file: 16. path: /tmp/{{ index_file }} 17. state: touch
5、官方推荐定义变量
创建group_vars目录,在里面创建以组名命名的文件给组定义变量,想对所有主机进行定义使用组下面的all进行定义;
1. [root@Ansible test]# mkdir group_vars 2. [root@Ansible test]# cat group_vars/web_group 3. web_server: httpd 4. [root@Ansible test]# cat test.yml 5. - hosts: web_group 6. tasks: 7. - name: install httpd server 8. yum: 9. name: "{{ web_server }}"
创建host_vars目录,在里面创建以主机别名命名的文件给主机定义变量。
1. [root@Ansible test]# mkdir host_vars 2. [root@Ansible test]# cat host_vars/web01 3. web_server: nginx 4. [root@Ansible test]# cat test.yml 5. - hosts: web_group 6. tasks: 7. - name: install httpd server 8. yum: 9. name: "{{ web_server }}"
变量优先级
变量读取优先级命令行>playbook文件>主机列表文件
注意:尽量使用一种定义变量的方式进行定义,太乱了不容易操作
变量注册
Ansible模块运行时,都会返回一些result结果,类似于执行脚本,我们需要获取这些结果,判断上一步是否执行成功,默认情况下,Ansible的result并不会显示出来,所以,我们可以吧这些返回值储存到变量之中,通过调用对应的变量名,获取这些result。这种将模块的返回值写入到变量的方法叫做变量注册。
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. tasks: 4. - name: test register vars 5. shell: "ls -l /" 6. [root@Ansible test]# ansible-playbook test.yml 7. 8. PLAY [web_group] *************************************************************** 9. 10. TASK [Gathering Facts] ********************************************************* 11. ok: [web01] 12. ok: [web02] 13. 14. TASK [test register vars] ****************************************************** 15. changed: [web02] 16. changed: [web01] 17. 18. PLAY RECAP ********************************************************************* 19. web01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 20. web02 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
当我们执行这个命令时,并不会给我们返回结果,只会返回changed是否改变,这时我们使用变量注册
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. tasks: 4. - name: test register vars 5. shell: "ls -l /" 6. register: list_dir 7. - name: return result 8. debug: 9. msg: "{{ list_dir }}" 10. 11. [root@Ansible test]# ansible-playbook test.yml 12. 13. PLAY [web_group] *************************************************************** 14. 15. TASK [Gathering Facts] ********************************************************* 16. ok: [web01] 17. ok: [web02] 18. 19. TASK [test register vars] ****************************************************** 20. changed: [web02] 21. changed: [web01] 22. 23. TASK [return result] *********************************************************** 24. ok: [web01] => { 25. "msg": { 26. "changed": true, 27. "cmd": "ls -l /", 28. "delta": "0:00:00.073085", 29. "end": "2023-04-19 17:30:57.892956", 30. "failed": false, 31. "rc": 0, 32. "start": "2023-04-19 17:30:57.819871", 33. "stderr": "", 34. "stderr_lines": [], 35. "stdout": "total 24\nlrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin\ndr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot\ndrwxr-xr-x 6 www www 71 Apr 19 08:29 code\ndrwxr-xr-x 19 root root 3200 Apr 18 22:37 dev\ndrwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 home\nlrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib\nlrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 media\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 mnt\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 opt\ndr-xr-xr-x 128 root root 0 Mar 30 20:56 proc\ndr-xr-x---. 5 root root 197 Apr 19 16:25 root\ndrwxr-xr-x 29 root root 740 Apr 19 17:20 run\nlrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 srv\ndr-xr-xr-x 13 root root 0 Apr 19 17:28 sys\ndrwxrwxrwt. 11 root root 4096 Apr 19 17:30 tmp\ndrwxr-xr-x. 13 root root 155 Mar 29 18:30 usr\ndrwxr-xr-x. 21 root root 4096 Apr 19 17:20 var", 36. "stdout_lines": [ 37. "total 24", 38. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin", 39. "dr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot", 40. "drwxr-xr-x 6 www www 71 Apr 19 08:29 code", 41. "drwxr-xr-x 19 root root 3200 Apr 18 22:37 dev", 42. "drwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc", 43. "drwxr-xr-x. 2 root root 6 Apr 11 2018 home", 44. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib", 45. "lrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64", 46. "drwxr-xr-x. 2 root root 6 Apr 11 2018 media", 47. "drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt", 48. "drwxr-xr-x. 2 root root 6 Apr 11 2018 opt", 49. "dr-xr-xr-x 128 root root 0 Mar 30 20:56 proc", 50. "dr-xr-x---. 5 root root 197 Apr 19 16:25 root", 51. "drwxr-xr-x 29 root root 740 Apr 19 17:20 run", 52. "lrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin", 53. "drwxr-xr-x. 2 root root 6 Apr 11 2018 srv", 54. "dr-xr-xr-x 13 root root 0 Apr 19 17:28 sys", 55. "drwxrwxrwt. 11 root root 4096 Apr 19 17:30 tmp", 56. "drwxr-xr-x. 13 root root 155 Mar 29 18:30 usr", 57. "drwxr-xr-x. 21 root root 4096 Apr 19 17:20 var" 58. ] 59. } 60. } 61. ok: [web02] => { 62. "msg": { 63. "changed": true, 64. "cmd": "ls -l /", 65. "delta": "0:00:00.072887", 66. "end": "2023-04-19 17:30:57.891135", 67. "failed": false, 68. "rc": 0, 69. "start": "2023-04-19 17:30:57.818248", 70. "stderr": "", 71. "stderr_lines": [], 72. "stdout": "total 28\nlrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin\ndr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot\ndrwxr-xr-x 6 www www 71 Apr 19 08:29 code\ndrwxr-xr-x 19 root root 3200 Apr 18 22:37 dev\ndrwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 home\nlrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib\nlrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 media\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 mnt\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 opt\ndr-xr-xr-x 127 root root 0 Mar 30 20:56 proc\ndr-xr-x---. 5 root root 4096 Apr 19 16:25 root\ndrwxr-xr-x 29 root root 740 Apr 19 17:20 run\nlrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin\ndrwxr-xr-x. 2 root root 6 Apr 11 2018 srv\ndr-xr-xr-x 13 root root 0 Apr 19 17:28 sys\ndrwxrwxrwt. 10 root root 4096 Apr 19 17:30 tmp\ndrwxr-xr-x. 13 root root 155 Mar 29 18:30 usr\ndrwxr-xr-x. 21 root root 4096 Apr 19 17:20 var", 73. "stdout_lines": [ 74. "total 28", 75. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin", 76. "dr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot", 77. "drwxr-xr-x 6 www www 71 Apr 19 08:29 code", 78. "drwxr-xr-x 19 root root 3200 Apr 18 22:37 dev", 79. "drwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc", 80. "drwxr-xr-x. 2 root root 6 Apr 11 2018 home", 81. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib", 82. "lrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64", 83. "drwxr-xr-x. 2 root root 6 Apr 11 2018 media", 84. "drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt", 85. "drwxr-xr-x. 2 root root 6 Apr 11 2018 opt", 86. "dr-xr-xr-x 127 root root 0 Mar 30 20:56 proc", 87. "dr-xr-x---. 5 root root 4096 Apr 19 16:25 root", 88. "drwxr-xr-x 29 root root 740 Apr 19 17:20 run", 89. "lrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin", 90. "drwxr-xr-x. 2 root root 6 Apr 11 2018 srv", 91. "dr-xr-xr-x 13 root root 0 Apr 19 17:28 sys", 92. "drwxrwxrwt. 10 root root 4096 Apr 19 17:30 tmp", 93. "drwxr-xr-x. 13 root root 155 Mar 29 18:30 usr", 94. "drwxr-xr-x. 21 root root 4096 Apr 19 17:20 var" 95. ] 96. } 97. } 98. 99. PLAY RECAP ********************************************************************* 100. web01 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 101. web02 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
内容很多,我们让其输入自己想要的内容
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. tasks: 4. - name: test register vars 5. shell: "ls -l /" 6. register: list_dir 7. - name: return result 8. debug: 9. msg: "{{ list_dir.stdout_lines }}" 10. [root@Ansible test]# ansible-playbook test.yml 11. 12. PLAY [web_group] *************************************************************** 13. 14. TASK [Gathering Facts] ********************************************************* 15. ok: [web02] 16. ok: [web01] 17. 18. TASK [test register vars] ****************************************************** 19. changed: [web02] 20. changed: [web01] 21. 22. TASK [return result] *********************************************************** 23. ok: [web01] => { 24. "msg": [ 25. "total 24", 26. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin", 27. "dr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot", 28. "drwxr-xr-x 6 www www 71 Apr 19 08:29 code", 29. "drwxr-xr-x 19 root root 3200 Apr 18 22:37 dev", 30. "drwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc", 31. "drwxr-xr-x. 2 root root 6 Apr 11 2018 home", 32. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib", 33. "lrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64", 34. "drwxr-xr-x. 2 root root 6 Apr 11 2018 media", 35. "drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt", 36. "drwxr-xr-x. 2 root root 6 Apr 11 2018 opt", 37. "dr-xr-xr-x 129 root root 0 Mar 30 20:56 proc", 38. "dr-xr-x---. 5 root root 197 Apr 19 16:25 root", 39. "drwxr-xr-x 29 root root 740 Apr 19 17:20 run", 40. "lrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin", 41. "drwxr-xr-x. 2 root root 6 Apr 11 2018 srv", 42. "dr-xr-xr-x 13 root root 0 Apr 19 17:28 sys", 43. "drwxrwxrwt. 11 root root 4096 Apr 19 17:34 tmp", 44. "drwxr-xr-x. 13 root root 155 Mar 29 18:30 usr", 45. "drwxr-xr-x. 21 root root 4096 Apr 19 17:20 var" 46. ] 47. } 48. ok: [web02] => { 49. "msg": [ 50. "total 28", 51. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 bin -> usr/bin", 52. "dr-xr-xr-x. 5 root root 4096 Mar 29 18:41 boot", 53. "drwxr-xr-x 6 www www 71 Apr 19 08:29 code", 54. "drwxr-xr-x 19 root root 3200 Apr 18 22:37 dev", 55. "drwxr-xr-x. 90 root root 8192 Apr 19 17:20 etc", 56. "drwxr-xr-x. 2 root root 6 Apr 11 2018 home", 57. "lrwxrwxrwx. 1 root root 7 Mar 29 18:30 lib -> usr/lib", 58. "lrwxrwxrwx. 1 root root 9 Mar 29 18:30 lib64 -> usr/lib64", 59. "drwxr-xr-x. 2 root root 6 Apr 11 2018 media", 60. "drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt", 61. "drwxr-xr-x. 2 root root 6 Apr 11 2018 opt", 62. "dr-xr-xr-x 127 root root 0 Mar 30 20:56 proc", 63. "dr-xr-x---. 5 root root 4096 Apr 19 16:25 root", 64. "drwxr-xr-x 29 root root 740 Apr 19 17:20 run", 65. "lrwxrwxrwx. 1 root root 8 Mar 29 18:30 sbin -> usr/sbin", 66. "drwxr-xr-x. 2 root root 6 Apr 11 2018 srv", 67. "dr-xr-xr-x 13 root root 0 Apr 19 17:28 sys", 68. "drwxrwxrwt. 10 root root 4096 Apr 19 17:34 tmp", 69. "drwxr-xr-x. 13 root root 155 Mar 29 18:30 usr", 70. "drwxr-xr-x. 21 root root 4096 Apr 19 17:20 var" 71. ] 72. } 73. 74. PLAY RECAP ********************************************************************* 75. web01 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 76. web02 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
debug模块常用参数
msg #调试输出的消息
var #将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出
verbosity #debug的级别(默认是0,全部显示)
层级定义变量
1、编辑变量文件
1. [root@Ansible test]# cat vars_file.yml 2. lamp: 3. framework: 4. web_package: httpd 5. db_package: mariadb-server 6. php_package: php 7. 8. lnmp: 9. framework: 10. web_package: nginx 11. db_package: mysql 12. php_package: php 13. 14. lnmt: 15. framework: 16. web_package: nginx 17. db_package: mysql 18. java_package: tomcat
2、编辑剧本文件
1. #简单写法 2. [root@Ansible test]# cat test.yml 3. - hosts: web_group 4. vars_files: vars_file.yml 5. tasks: 6. - name: install lamp httpd 7. yum: 8. name: "{{ lamp.framework.web_package }}" 9. - name: install lamp mariadb-server 10. yum: 11. name: "{{ lamp.framework.db_package }}" 12. - name: install lamp php 13. yum: 14. name: "{{ lamp.framework.php_package }}" 15. 16. #官方推荐写法 17. [root@Ansible test]# cat test.yml 18. - hosts: web_group 19. vars_files: vars_file.yml 20. tasks: 21. - name: install lamp httpd 22. yum: 23. name: "{{ lamp['framework']['web_package'] }}" 24. - name: install lamp mariadb-server 25. yum: 26. name: "{{ lamp['framework']['db_package'] }}" 27. - name: install lamp php 28. yum: 29. name: "{{ lamp['framework']['php_package'] }}"
3、执行剧本
1. [root@Ansible test]# ansible-playbook test.yml 2. 3. PLAY [web_group] *************************************************************** 4. 5. TASK [Gathering Facts] ********************************************************* 6. ok: [web01] 7. ok: [web02] 8. 9. TASK [install lamp httpd] ****************************************************** 10. ok: [web01] 11. ok: [web02] 12. 13. TASK [install lamp mariadb-server] ********************************************* 14. ok: [web01] 15. ok: [web02] 16. 17. TASK [install lamp php] ******************************************************** 18. ok: [web01] 19. ok: [web02] 20. 21. PLAY RECAP ********************************************************************* 22. web01 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 23. web02 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
facts缓存变量
Ansible facts是在客户端主机通过Ansible自动采集发现的变量,facts包含每台特定的主机信息,如被控端的主机名、IP地址、系统版本、CPU数量、内存状态、磁盘状态等等。
1、fasts使用场景
1、通过facts缓存检查CPU,来生成对应的nginx配置文件
2、通过facts缓存检查主机名,生成不同的zabbix配置文件
3、通过facts缓存检索物理机的内存大小来生成不同的mysql配置文件
Ansible facts类似于saltstack中的grains,对于做自动化非常有帮助!
2、fasts用法
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. vars_files: vars_file.yml 4. tasks: 5. - name: get host info 6. debug: 7. msg: Hostname "{{ ansible_fqdn }}" and IP "{{ an 8. sible_default_ipv4.address }}" 9. 10. [root@Ansible test]# ansible-playbook test.yml 11. 12. PLAY [web_group] *************************************************************** 13. 14. TASK [Gathering Facts] ********************************************************* 15. ok: [web01] 16. ok: [web02] 17. 18. TASK [get host info] *********************************************************** 19. ok: [web01] => { 20. "msg": "Hostname \"Web01\" and IP \"10.0.0.7\"" 21. } 22. ok: [web02] => { 23. "msg": "Hostname \"Web02\" and IP \"10.0.0.8\"" 24. } 25. 26. PLAY RECAP ********************************************************************* 27. web01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 28. web02 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 29. 30. [root@Ansible test]#
3、关闭fasts
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. gather_facts: no #关闭信息采集 4. vars_files: vars_file.yml 5. tasks: 6. - name: get host info 7. debug: 8. msg: Hostname "{{ ansible_fqdn }}" and IP "{{ ansible_default_ipv4.address }}"
4、fasts生成zabbix配置文件
1. [root@Ansible test]# cat test.yml 2. - hosts: web_group 3. vars: 4. - zabbix_server: 172.16.1.71 5. tasks: 6. - name: copy zabbix agent conf 7. template: #作用是将管理机上的变量内容覆盖到客户机的目标配置文件中 8. src: ./zabbix_agentd.conf 9. dest: /tmp/zabbix_agentd.conf
5、facts生成mysqld配置文件
1. - hosts: db_group 2. tasks: 3. - name: Install mysql server 4. yum: 5. name: mariadb-server 6. state: present 7. 8. - name: copy mysql conf 9. template: #作用是将管理机上的变量内容覆盖到客户机的目标配置文件中 10. src: ./my.cnf 11. dest: /etc/my.cnf 12. 13. [root@m01 ~]# vim /etc/my.cnf 14. [mysqld] 15. basedir=/usr 16. datadir=/var/lib/mysql/ 17. socket=/var/lib/mysql/mysql.sock 18. log_error=/var/log/mariadb/mariadb.log 19. innodb_buffer_pool_size={{ ansible_memtotal_mb * 0.8 }}
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!