playbook之變量的使用

在平時運維工作中有時候需要根據不同的遠程節點或者針對不同的IP的系統做不同的配置部署.Ansible可以根據不同的IP地址來對各個節點上的配置文件做不同的處理,這裏就需要用到變量,變量可以定義在不同的地方。本節分爲變量的定義和變量的使用兩個部分

變量定義

1.定義在hosts主機中:如
[http_server:vars]
http_port=80
maxRequestsPerChild=808

2.在playbook中直接定義:如
- hosts:db_server
  vars:
  mysql_port: 3306

3.通過文件包含和角色定義變量:如
---
http_port: 8099
max_clients: 321

變量使用:

在模板文件中使用變量:
My amp goes to {{ max_amp_value }}

在playbooks文件中使用變量:
template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg

在定義變量中引用其他變量:
- hosts: app_servers
  vars:
    app_path: "{{ base_path }}/22"

使用系統的信息:facts
ansible hostname -m setup

關閉facts
如果你確信不需要主機的任何facts信息,而且對遠程節點主機都瞭解的很清楚,那麼可以將其關閉。遠程操作節點較多的時候,關閉facts會提升ansible的性能。只需要在play中設置如下:

- hosts: whatever
  gather_facts: no

註冊變量:
一個任務的運行結果都可以保存到一個變量中,供稍後使用,有時候需要將運行的命令的角色保存起來,並作爲下一個人任務的執行條件。在運行playbooks的時候可以使用-v參數來顯示執行過程中的結果信息。如:

- hosts: webserver

  tasks:

     - shell: /usr/bin/foo
       register: foo_result
       ignore_errors: True

     - shell: /usr/bin/bar
       when: foo_result.rc == 5

使用系統變量案例

---
- hosts: test
  vars:
    http_port: 80
    maxRequestsPerChild: 808
  tasks:
    - name: echo {{ansible_all_ipv4_addresses}}
      echo:{{ansible_all_ipv4_addresses}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章