自学内容网 自学内容网

ansible变量

一.ansible变量


一.ansible变量
 1.Ansible中的facts变量
2.Ansible中的自定义变量

  1.Ansible中的facts变量

    (1)Facts变量是什么:

facts变量可以理解为Ansible中的预定义变量(自带变量{{ ansible_hostname }}等)
用于采集的被控节点的设备信息
主要包含IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等

    (2)查看Facts变量

使用setup模块,用于获取所有facts信息
ansible web1 -m setup | less


   (3)剧本中使用facts变量
剧本中调用变量格式:{{ 变量名 }}
剧本中可以使用debug模块打印变量信息
剧本中默认有Gathering Facts的任务,收集到Facts信息后可以使用该模块打印


  2.Ansible中的自定义变量(优先级从低到高)
Ansible支持十几种变量定义方式
Ansible变量定义的位置,下列变量优先级从低到高

roles defaults目录下的变量

-inventory文件中定义,主机的变量
-inventory文件,组的变量

inventory文件主机的变量

-play剧本中组的变量

play剧本中主机的变量

-facts事实变量
vars定义的变量
vars_prompt定义的变量
vars_files导入的变量
注册变量
roles中单独定义的及导入的变量
block中定义的变量
任务中定义的变量
命令行指定的变量


-常用变量:(优先级低到高)
(1)inventory清单文件中单主机的变量(读取到该主机的时候读取变量)
(2)inventory清单文件主机组的变量(读取到该组的时候读取)
(3)play剧本中定义的变量      
(4)".yml"变量文件定义的变量(其它剧本也可使用)vars_files: fvars.yml
(5)facts事实变量


(1)inventory清单文件中定义单主机的变量(读取到该主机的时候读取变量)
[dbs]
db1 username="liubei"   #定义属于db1主机的变量

---
- name: create user with host vars
  hosts: db1
  tasks:
    - name: test host vars
      user:
        name: "{{ username }}" 前面没东西必须加双引号
        state: present

(2)inventory清单文件组的变量(读取到该组的时候读取)
[webservers:vars]   #定义属于组的变量,:vars是固定格式
username="guanyu"

(3)play剧本中组的变量
---
- name: create user with play vars
  hosts: webservers
  vars:                     #剧本中定义变量
    username: "zhangfei"    #定义变量
    password: "123456"      #定义变量,数字作为密码必须用引号,表示字符串
  tasks:
    - name: test play vars
      user:
        name: "{{ username }}"
        password: "{{ password|password_hash('sha512')}}"
        state: present

(4)".yml"变量文件定义变量(其它剧本也可使用)
[root@pubserver ansible]# vim fvars.yml
---
username: "lvbu"
password: "654321"
---
- name: create user with vars files
  hosts: webservers
  vars_files: fvars.yml     #调用定义变量的文件
  tasks:
    - name: test vars file
      user:
        name: "{{ username }}"  
        password: "{{ password | password_hash('sha512')}}"
 
(5)facts事实变量
[root@pubserver ansible]# vim var5.yml
---
- name: copy file with facts
  hosts: webservers
  tasks:
    - name: use facts
      copy:
        content: "hostname: {{ ansible_hostname }}"
        dest: /tmp/facts.txt


一.ansible变量
     1.Ansible中的facts变量
    2.Ansible中的自定义变量

  1.Ansible中的facts变量

    (1)Facts变量是什么:

    facts变量可以理解为Ansible中的预定义变量(自带变量{{ ansible_hostname }}等)
    用于采集的被控节点的设备信息
    主要包含IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等

    (2)查看Facts变量

    使用setup模块,用于获取所有facts信息
    ansible web1 -m setup | less


   (3)剧本中使用facts变量
    剧本中调用变量格式:{{ 变量名 }}
    剧本中可以使用debug模块打印变量信息
    剧本中默认有Gathering Facts的任务,收集到Facts信息后可以使用该模块打印
    

  2.Ansible中的自定义变量(优先级从低到高)
    Ansible支持十几种变量定义方式
    Ansible变量定义的位置,下列变量优先级从低到高

    roles defaults目录下的变量

    -inventory文件中定义,主机的变量
    -inventory文件,组的变量

    inventory文件主机的变量

    -play剧本中组的变量
        
    play剧本中主机的变量

    -facts事实变量
    vars定义的变量
    vars_prompt定义的变量
    vars_files导入的变量
    注册变量
    roles中单独定义的及导入的变量
    block中定义的变量
    任务中定义的变量
    命令行指定的变量
    

    -常用变量:(优先级低到高)
    (1)inventory清单文件中单主机的变量(读取到该主机的时候读取变量)
    (2)inventory清单文件主机组的变量(读取到该组的时候读取)
    (3)play剧本中定义的变量      
    (4)".yml"变量文件定义的变量(其它剧本也可使用)vars_files: fvars.yml
    (5)facts事实变量


    (1)inventory清单文件中定义单主机的变量(读取到该主机的时候读取变量)
        [dbs]
        db1 username="liubei"   #定义属于db1主机的变量

        ---
        - name: create user with host vars
          hosts: db1
          tasks:
            - name: test host vars
              user:
                name: "{{ username }}" 前面没东西必须加双引号
                state: present

    (2)inventory清单文件组的变量(读取到该组的时候读取)
        [webservers:vars]   #定义属于组的变量,:vars是固定格式
        username="guanyu"
    
    (3)play剧本中组的变量
        ---
        - name: create user with play vars
          hosts: webservers
          vars:                     #剧本中定义变量
            username: "zhangfei"    #定义变量
            password: "123456"      #定义变量,数字作为密码必须用引号,表示字符串
          tasks:
            - name: test play vars
              user:
                name: "{{ username }}"
                password: "{{ password|password_hash('sha512')}}"
                state: present

    (4)".yml"变量文件定义变量(其它剧本也可使用)
        [root@pubserver ansible]# vim fvars.yml
        ---
        username: "lvbu"
        password: "654321"
        ---
        - name: create user with vars files
          hosts: webservers
          vars_files: fvars.yml     #调用定义变量的文件
          tasks:
            - name: test vars file
              user:
                name: "{{ username }}"  
                password: "{{ password | password_hash('sha512')}}"
         
    (5)facts事实变量
        [root@pubserver ansible]# vim var5.yml
        ---
        - name: copy file with facts
          hosts: webservers
          tasks:
            - name: use facts
              copy:
                content: "hostname: {{ ansible_hostname }}"
                dest: /tmp/facts.txt
        


    


 


原文地址:https://blog.csdn.net/qq_50655286/article/details/144049468

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!