Ansible_變量定義與引用
inventory定義主機及主機組(自定義變量)
$ cat hosts localhost ansible_ssh_host=192.168.38.104 key=104client_105 ansible_ssh_host=192.168.38.105 key=105sour_106 ansible_ssh_host=192.168.38.106 key=106
通過/etc/ansible/ 定義文件表示變量
創建:/etc/ansible/host_vars/ 創建:/etc/ansible/group_vars/ 目錄下文件名與host & group名一致,並未yml格式 例: $ cat /etc/ansible/host_vars/client_105.yml --- client_105_key: 105
使用ansible-playbook命令行傳入:
- 爲全局變量:- -e "name=duanyifei"- --extra-vars=EXTRA_VARS- -e "@var.json" / "@var.yaml" (通過文件傳入) - cat var.json: - {"key": "json"} - cat var.yaml: - key: yaml
playbook中寫入:
--- - host: client_105 vars: key: ansible
playbook中引用vars_file:
vars_files: - var.yaml
vars_prompt傳入
--- - hosts: client_105 gather_facts: False vars_prompt: - name: 'client_105_key' prompt: 'Input key' #交互時提示信息 private: no #輸入數據是否顯示 tasks: - name: print 105_key debug: msg="{{ client_105_key }}"
register變量:
兩個tasks之前傳遞變量:
tasks: - name: test1 shell: hostname register: info - name: test2 debug: msg="the varibale is {{ info }}"
setup模塊獲取變量傳入
# 獲取remote_ip變量,並傳給對端 $ cat variable.yml --- - hosts: client_105 tasks: - name: print 105_key template: src=1.txt dest=/tmp $ cat 1.txt {{ ansible_all_ipv4_addresses }} 結果: [root@Client_105 ~]# cat /tmp/1.txt [u'192.168.38.105']