ansible-变量 vars-6

在外部定义变量值
变量名:只能用字母 数字 下划线组成,且只能以字母开头

playbook中设置变量名: {{ 变量名 }}

---
- hosts: all
  remote_user: root

  tasks:
    - name: install package
      yum: name={{ package  }} state=latest

    - name: up service
      service: name={{ package  }} state=started enable=yes

给变量赋值为nginx,并使用脚本 (此种赋值方式级别最高)

ansible-playbook -e 'packeage=nginx' playbook.yml
-e:'变量名=值'

当playbook中有多个变量需要赋值

---
- hosts: all
  remote_user: root

  tasks:
    - name: install package
      yum: name={{ package1  }} state=latest
      
    - name: install package
      yum: name={{ package2  }} state=latest      

给变量赋值,并使用脚本

ansible-playbook -e 'packeage-1=nginx package-2=docker' playbook.yml
-e:'变量名-1=值 变量名-1=值',多个变量用空格分隔

在playbook中定义变量值

---
- hosts: all
  remote_user: root
  vars:                           #声明变量
    - package1: nginx            #定义变量
    - package2: docker  

  tasks:
    - name: install package
      yum: name={{ package-1  }} state=latest    #安装nginx
      
    - name: install package
      yum: name={{ package-2  }} state=latest       #安装docker

在/etc/ansible/hosts中定义变量

普通变量:主机组中主机单独定义,优先级高于公共变量
公共(组)变量:针对主机组中所有主机定义统一变量

定义普通变量

vim /etc/ansible/hosts
[A]
192.168.205.128 pord=1     #pord=1是xxx.xxx.xxx.128的专属变量
192.168.205.130 pord=2

使用专属变量

- hosts: all
  remote_user: root
    tasks:
    - name: rename 
      hostname: name=www{{pord}}.com.cn #调用专属变量

定义公共(组)变量

vim /etc/ansible/hosts
[A]
192.168.205.128 pord=1 
192.168.205.130 pord=2
[A:vars]                               #注意此处的变化
name=www
domainname=.com.cn
ansible_ssh_port=65535     #被控端 ssh端口发生改变,在这里定义新端口

使用 专属变量 和 普通变量

- hosts: 192.168.205.128
  remote_user: root

  tasks:
    - name: rename
      hostname: name={{name}}{{pord}}{{domainname}} #调用专属变量

得到的name:www1.com.cn

/etc/anshible/hosts文件中定义的变量,依然可以通过命令行进行修改,命令行优先级最高

ansible-playbook -e 'name=aaa domainname=kkkk' playbook.yml
hosts文件中定义过变量,也要命令行优先,因为命令行优先配置文件

调用事先写在文件中的变量,使用变量文件
vars_files:

创建一个存放变量的文件

cat vars.yml         #格式: 变量名:值
var1: httpd
var2: nginx
var3: mysql
var4: docker

playbook中调用此文件中的变量

---
- hosts: all
  remote_user: root
  vars_files:         #调用变量文件
    - vars.yml
  
  tasks:
    - name: install httpd package
      yum: name={{var1}} state=latest   #安装httpd
      
  tasks:
    - name: install nginx package
      yum: name={{var2}} state=latest   #安装nginx
      
  tasks:
    - name: install mysql package
      yum: name={{var3}} state=latest       #安装mysql    ,变量值和变量文件对应
  ....省略           


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容