2023年7月10日发(作者:)
ansible-playbook04模板when⽤法ansible-playbook模板的使⽤-when需求系统版本不同,根据系统版本使⽤对应的nginx模板具体实现1. 不知系统版本变量名称的情况下搜索变量名[root@localhost ansible]# ansible all -m setup | grep version "ansible_bios_version": "VirtualBox", "ansible_distribution_major_version": "6", "ansible_distribution_version": "6.10", "ansible_kernel_version": "#1 SMP Mon Apr 27 15:30:33 UTC 2020", "ansible_product_version": "1.2", "version": { "version_info": [ "ansible_python_version": "2.6.6", "ansible_bios_version": "VirtualBox", "ansible_distribution_major_version": "7", "ansible_distribution_version": "7.2", "ansible_kernel_version": "#1 SMP Mon Jan 25 22:07:14 UTC 2016", "ansible_product_version": "1.2", "version": { "version_info": [ "ansible_python_version": "2.7.5", "version": "1.4.0" "version": "VirtualBox" "facter_facterversion": "3.1.4", "facter_kernelmajversion": "3.10", "facter_kernelversion": "3.10.0", "facter_puppetversion": "4.3.2", "version": "2.1.8" "ansible_bios_version": "VirtualBox", "ansible_distribution_major_version": "7", "ansible_distribution_version": "7.2", "ansible_kernel_version": "#1 SMP Mon Jan 25 22:07:14 UTC 2016", "ansible_product_version": "1.2", "version": { "version_info": [ "ansible_python_version": "2.7.5", "version": "1.4.0" "version": "VirtualBox" "facter_facterversion": "3.1.4", "facter_kernelmajversion": "3.10", "facter_kernelversion": "3.10.0", "facter_puppetversion": "4.3.2", "version": "2.1.8"通过分析可以看出ansible_distribution_major_version即为系统版本.2. setup模块的filter过滤[root@localhost playbook]# ansible all -m setup -a 'filter=ansible_distribution_major_version'192.168.0.109 | SUCCESS => { "ansible_facts": { "ansible_distribution_major_version": "6", "discovered_interpreter_python": "/usr/bin/python" }, "changed": false}192.168.0.107 | SUCCESS => { "ansible_facts": { "ansible_distribution_major_version": "7", "discovered_interpreter_python": "/usr/bin/python" }, "changed": false}192.168.0.108 | SUCCESS => { "ansible_facts": { "ansible_distribution_major_version": "7", "discovered_interpreter_python": "/usr/bin/python" }, "changed": false}3. 编写⽂件,添加when条件,具体如下:[root@localhost playbook]# cat ---- hosts: all remote_user: root vars: - pkg1: nginx tasks: - name: install {{ pkg1 }} yum: name=nginx - name: copy template for centos6 template: src=6.j2 dest=/etc/nginx/ when: ansible_distribution_major_version == "6" notify: restartsrv - name: copy template for centos7 template: src=7.j2 dest=/etc/nginx/ when: ansible_distribution_major_version == "7" notify: restartsrv - name: start {{ pkg1 }} server service: name=nginx state=started enabled=yes handlers: - name: restartsrv service: name=nginx state=restarted4. 准备不同系统版本的nginx模板⽂件[root@localhost playbook]# ls templates/6.j2 7.j25. 修改模板⽂件内容,详见worker_processes参数配置:[root@localhost playbook]# cat templates/6.j2user nginx;worker_processes {{ ansible_processor_vcpus+4 }};[root@localhost playbook]# cat templates/7.j2user daemon;worker_processes {{ ansible_processor_vcpus*2 }}; server { listen {{ port }} default_server; listen [::]:{{ port }} default_server; }}6. 执⾏[root@localhost playbook]# ansible-playbook
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688987204a191939.html
评论列表(0条)