Ansible ใช้ inventory_hostname หรือ ansible_hostname ในชื่องาน


19

ฉันกำลังเขียน playbook อัพเกรดที่กำลังกลิ้งและต้องการพิมพ์ชื่อโฮสต์ของโฮสต์ปัจจุบันที่ได้รับการอัพเกรด

ฉันใส่inventory_hostnameและansible_hostnameชื่องาน แต่ไม่ได้ผล

- name: upgrade softare on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}

แก้ปัญหาทำงานได้ดี

- name: Test a variable
  debug: var=inventory_hostname

TASK: [Test a variable] ******************************************************* 
ok: [SERV14] => {
    "var": {
        "inventory_hostname": "SERV14"
    }
}

ดังนั้นสิ่งที่ฉันควรทำเพื่อให้สามารถใช้ตัวแปรเหล่านั้นในคำอธิบายชื่องาน

ขอบคุณ


4
ปัจจุบันการแทนที่ตัวแปรไม่สามารถทำได้ในชื่อ ดูที่นี่
cuonglm

คำตอบ:


27

เริ่มต้นจาก v2.0 Ansible รองรับการทดแทนตัวแปรในชื่องาน / ตัวจัดการ: https://github.com/ansible/ansible/issues/10347ดังนั้นตัวอย่างเหล่านี้จะทำงานได้ตามที่คาดไว้:

- name: upgrade software on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}

0

ฉันคิดว่าคุณควรเขียน{{ ansible_hostname }}หลังtasks:เพราะก่อนหน้านั้นมันยังไม่ได้รวบรวมข้อเท็จจริงดังนั้นจึงไม่สามารถให้ผลลัพธ์ ฉันอาจจะผิดในแนวคิด แต่ในทางปฏิบัติก็ประสบความสำเร็จ

tasks:
  - name: Install the httpd on {{ ansible_hostname }}
    yum: 
      name: httpd 
      state: latest

PlayBook

เล่นเอาท์พุท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.