jenkins通過ansible的set_fact模塊給變量賦值


轉載自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對應的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM