轉載自joshua317博客 https://www.joshua317.com/article/24
1.通過set_fact模塊可以在tasks中定義變量,yaml文件內容如下:
#要部署的遠程服務器ip,通過ansible.ini里面設置
- hosts: "{{ server_group }}"
vars:
var1: var1_string
tasks:
- shell: "echo var2_string"
register: shellReturn
- set_fact:
var1: "{{testvar1}}"
var2: "{{shellReturn.stdout}}"
- debug:
msg: "{{var1}} {{var2}}"
2.獲取當前ansible操作的遠程服務器ip的地址
- hosts: "{{ server_group }}"
- debug: var=inventory_hostname
- debug: var=hostvars[inventory_hostname]['ansible_default_ipv4']['address']
- shell: "echo {{ inventory_hostname }}"
register: shellReturn
#把獲取到的ip地址賦值給SERVER_IP變量
- set_fact:
SERVER_IP: "{{shellReturn.stdout}}"
3.通過template模塊替換文件里面的SERVER_IP
舉例說明
首先需要有一個.j2后綴的文件,如php.ini.j2,里面的內容有變量SERVER_IP
ENV.HOST_IP = "{{ SERVER_IP }}"
通過template模塊替換如下:
- name: create {{ project }} copy php-conf
template:
src: "conf/php/php.ini.j2"
dest: "/data/conf/php/php.ini"
此時,通過jenkins發布的時候,php.ini文件的里面的ENV.HOST_IP值,已經變成了SERVER_IP對應的值。