Ansible-playbook 变量进阶(学习笔记二十五)

简介: 1、register结果返回到变量中- name: debug test one host  hosts: 200.200.6.53  tasks:    - debug:        msg: "System {{ inventory_h...

1、register结果返回到变量中

- name: debug test one host

  hosts: 200.200.6.53

  tasks:

    - debug:

        msg: "System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}"

    - debug:

        msg: "System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gateway }}"

      when: ansible_default_ipv4.gateway is defined

    - shell: /usr/bin/uptime

      register: result

    - debug:

        var: result

        verbosity: 4

    - name: Display all variables/facts known for a host

      debug:

        var: hostvars[inventory_hostname]

        verbosity: 2


img_2c28e9398a908cff60891709e5469ac5.png
result结果


2、要从系统变量中获取http_proxy的信息,使用lookup:

--- #1

- name: Downloads a file using the same proxy as the controlling machine

  hosts: all

  tasks:

    - name: Download file

      get_url: dest=/var/tmp/file.tar.gz url=http://server/file.tar.gz

      environment:

      http_proxy: "{{ lookup('env', 'http_proxy') }}"


3、使用外部变量:ansible-playbook release.yml --extra-vars"hosts=vipers user=starbuck"

---


-hosts: '{{ hosts }}'

  remote_user: '{{ user }}'


4、变量可以在模板、playbook等所有环境下使用

-hosts: webservers

  vars:

    http_port: 80


5、远程节点系统上/etc/ansible/facts.d目录,这个目录下的以.fact为后缀的文件,里面的内容可以是JSON格式,或者ini格式书写;或者是一个可以返回json格式数据的可执行文件,都可以用来提供本地facts信息:

在远程节点创建一个/etc/ansible/facts.d/preferences.fact的文件,内容如下:

[general]

asdf=1

bar=2

在控制节点获取自定义的信息:

[root@web1 ~]# ansible webservers -m setup -a "filter=ansible_local"

192.168.1.65| success >> {

    "ansible_facts": {

        "ansible_local": {

            "preferences": {

                "general": {

                    "asdf": "1", 

                    "bar": "2"

                }

            }

        }

    }, 

    "changed": false

}

filter来指定一个过滤条件。

可以在playbooks或者模板中这样使用获取到的信息:

1{{ ansible_local.preferences.general.asdf }}


6、将变量定义到特定的文件中,在playbooks中使用var_files导入文件即可:

---

-hosts: all

  remote_user: root

  vars:

    favcolor: blue

  vars_files:

    -/vars/external_vars.yml

  tasks:

  -name: this isjust a placeholder

    command: /bin/echo foo

变量文件也是YMAL格式:

# in the above example, this would be vars/external_vars.yml

somevar: somevalue

password: magic

目录
相关文章
|
5月前
|
JSON 数据格式 索引
Ansible fact变量与魔法变量
Ansible fact变量与魔法变量
79 6
|
5月前
|
存储 网络安全 数据安全/隐私保护
Ansible的变量
Ansible的变量
66 6
|
缓存 运维 监控
【运维知识进阶篇】Ansible变量详解(变量定义+变量优先级+变量注册+层级定义变量+facts缓存变量)
【运维知识进阶篇】Ansible变量详解(变量定义+变量优先级+变量注册+层级定义变量+facts缓存变量)
423 0
|
存储 JSON 数据安全/隐私保护
ansible定义变量和管理事实
ansible定义变量和管理事实
161 0
|
存储 缓存 监控
【2023】ansible-variables变量详解
【2023】ansible-variables变量详解
143 0
|
应用服务中间件 PHP nginx
ansible:roles学习笔记
ansible:roles学习笔记
110 0
|
应用服务中间件 Linux 数据安全/隐私保护
ansible:playbook学习笔记
ansible:playbook学习笔记
143 0
Ansible 自定义变量与 role 默认变量的合并方法
如果你遇到 failed to combine variables, expected dicts but got a 'NoneType' and a 'dict' 这样的报错,你可以看看本文。
340 0
|
存储 JSON 缓存
ansible学习之旅(facts变量)
ansible学习之旅(facts变量)
190 0
ansible学习之旅(初识变量)
ansible学习之旅(初识变量)
89 0