日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ansible-Playbook-template算数运算以及流程控制

發布時間:2025/1/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ansible-Playbook-template算数运算以及流程控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
template中使用流程控制 for 和 if

template中也可以使用流程控制 for 循環和 if 條件判斷,實現動態生成文件功能

范例

#temlnginx2.yml --- - hosts: websrvsremote_user: rootvars:nginx_vhosts:- 81- 82- 83tasks:- name: template configtemplate: src=nginx.conf.j2 dest=/data/nginx.conf#templates/nginx.conf2.j2 {% for vhost in nginx_vhosts %} server {listen {{ vhost }} } {% endfor %}ansible-playbook -C templnginx2.yml --limit 10.0.0.8#生成的結果: server {listen 81 } server {listen 82 } server {listen 83 }

YAML

范例:

#temlnginx3.yml --- - hosts: websrvsremote_user: rootvars:nginx_vhosts:- listen: 8080tasks:- name: config filetemplate: src=nginx.conf3.j2 dest=/data/nginx3.conf#templates/nginx.conf3.j2 {% for vhost in nginx_vhosts %} server {listen {{ vhost.listen }} } {% endfor %}ansible-playbook templnginx3.yml --limit 10.0.0.8#生成的結果 server {listen 8080 }

范例:

#templnginx4.yml - hosts: websrvsremote_user: rootvars:nginx_vhosts:- listen: 8080server_name: "web1.magedu.com"root: "/var/www/nginx/web1/"- listen: 8081server_name: "web2.magedu.com"root: "/var/www/nginx/web2/"- {listen: 8082, server_name: "web3.magedu.com", root: "/var/www/nginx/web3/"}tasks:- name: template config template: src=nginx.conf4.j2 dest=/data/nginx4.conf# templates/nginx.conf4.j2 {% for vhost in nginx_vhosts %} server {listen {{ vhost.listen }}server_name {{ vhost.server_name }}root {{ vhost.root }} } {% endfor %}ansible-playbook templnginx4.yml --limit 10.0.0.8#生成結果: server {listen 8080server_name web1.magedu.comroot /var/www/nginx/web1/ } server {listen 8081server_name web2.magedu.comroot /var/www/nginx/web2/ } server {listen 8082server_name web3.magedu.comroot /var/www/nginx/web3/ }

YAML

在模版文件中還可以使用 if條件判斷,決定是否生成相關的配置信息

范例:

#templnginx5.yml - hosts: websrvsremote_user: rootvars:nginx_vhosts:- web1:listen: 8080root: "/var/www/nginx/web1/"- web2:listen: 8080server_name: "web2.magedu.com"root: "/var/www/nginx/web2/"- web3:listen: 8080server_name: "web3.magedu.com"root: "/var/www/nginx/web3/"tasks:- name: template config to template: src=nginx.conf5.j2 dest=/data/nginx5.conf#templates/nginx.conf5.j2 {% for vhost in nginx_vhosts %} server {listen {{ vhost.listen }}{% if vhost.server_name is defined %} server_name {{ vhost.server_name }}{% endif %} root {{ vhost.root }} } {% endfor %}#生成的結果 server {listen 8080root /var/www/nginx/web1/ } server {listen 8080server_name web2.magedu.comroot /var/www/nginx/web2/ } server {listen 8080server_name web3.magedu.comroot /var/www/nginx/web3/ }

YAML

playbook使用 when

when語句,可以實現條件測試。如果需要根據變量、facts或此前任務的執行結果來做為某task執行與否的前提時要用到條件測試,通過在task后添加when子句即可使用條件測試,jinja2的語法格式

范例:

--- - hosts: websrvsremote_user: roottasks:- name: "shutdown RedHat flavored systems"command: /sbin/shutdown -h nowwhen: ansible_os_family == "RedHat"

YAML

范例:

--- - hosts: websrvsremote_user: roottasks:- name: add group nginxtags: useruser: name=nginx state=present- name: add user nginxuser: name=nginx state=present group=nginx- name: Install Nginxyum: name=nginx state=present- name: restart Nginxservice: name=nginx state=restartedwhen: ansible_distribution_major_version == “6”

YAML

范例:

--- - hosts: websrvsremote_user: roottasks: - name: install conf file to centos7template: src=nginx.conf.c7.j2 dest=/etc/nginx/nginx.confwhen: ansible_distribution_major_version == "7"- name: install conf file to centos6template: src=nginx.conf.c6.j2 dest=/etc/nginx/nginx.confwhen: ansible_distribution_major_version == "6"

YAML

playbook 使用迭代 with_items

迭代:當有需要重復性執行的任務時,可以使用迭代機制
對迭代項的引用,固定變量名為”item“
要在task中使用with_items給定要迭代的元素列表

列表元素格式:

  • 字符串
  • 字典

范例:

--- - hosts: websrvsremote_user: roottasks:- name: add several usersuser: name={{ item }} state=present groups=wheelwith_items:- testuser1- testuser2 #上面語句的功能等同于下面的語句- name: add user testuser1user: name=testuser1 state=present groups=wheel- name: add user testuser2user: name=testuser2 state=present groups=wheel

范例:

--- #remove mariadb server - hosts: appsrvs:!192.168.38.8remote_user: roottasks:- name: stop serviceshell: /etc/init.d/mysqld stop- name: delete files and dirfile: path={{item}} state=absentwith_items:- /usr/local/mysql- /usr/local/mariadb-10.2.27-linux-x86_64- /etc/init.d/mysqld- /etc/profile.d/mysql.sh- /etc/my.cnf- /data/mysql- name: delete useruser: name=mysql state=absent remove=yes

范例:

--- - hosts:websrvsremote_user: roottasks- name: install some packagesyum: name={{ item }} state=presentwith_items:- nginx- memcached- php-fpm

?

范例:

--- - hosts: websrvsremote_user: roottasks:- name: copy filecopy: src={{ item }} dest=/tmp/{{ item }}with_items:- file1- file2- file3- name: yum install httpdyum: name={{ item }} state=present with_items:- apr- apr-util- httpd

?

**迭代嵌套子變量:**在迭代中,還可以嵌套子變量,關聯多個變量在一起使用

示例:

--- - hosts: websrvsremote_user: roottasks:- name: add some groupsgroup: name={{ item }} state=presentwith_items:- nginx- mysql- apache- name: add some usersuser: name={{ item.name }} group={{ item.group }} state=presentwith_items:- { name: 'nginx', group: 'nginx' }- { name: 'mysql', group: 'mysql' }- { name: 'apache', group: 'apache' }

YAML

范例:

cat with_item2.yml --- - hosts: websrvsremote_user: roottasks:- name: add some groupsgroup: name={{ item }} state=presentwith_items:- g1- g2- g3- name: add some usersuser: name={{ item.name }} group={{ item.group }} home={{ item.home }} create_home=yes state=presentwith_items:- { name: 'user1', group: 'g1', home: '/data/user1' }- { name: 'user2', group: 'g2', home: '/data/user2' }- { name: 'user3', group: 'g3', home: '/data/user3' }

參考鏈接:http://www.yunweipai.com/34665.html

總結

以上是生活随笔為你收集整理的Ansible-Playbook-template算数运算以及流程控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。