คำถามติดแท็ก ansible

Red Hat Ansible คือการจัดการการกำหนดค่าที่ขับเคลื่อนด้วยโมเดลการปรับใช้ / การจัดระเบียบแบบหลายโหนดและระบบการเรียกใช้งานระยะไกล ใช้ SSH โดยค่าเริ่มต้นดังนั้นจึงไม่มีซอฟต์แวร์พิเศษที่จะติดตั้งบนโหนดที่คุณจัดการ Ansible เขียนด้วย Python แต่สามารถขยายเป็นภาษาใดก็ได้ มาในเวอร์ชันโอเพ่นซอร์สและเวอร์ชันสำหรับองค์กร

5
ความแตกต่างระหว่างค่าเริ่มต้นและ vars ในบทบาท Ansible คืออะไร
เมื่อสร้างบทบาท Ansible ใหม่เทมเพลตจะสร้างทั้ง a varsและdefaultsไดเรกทอรีที่มีmain.ymlไฟล์เปล่า เมื่อกำหนดบทบาทของฉันฉันสามารถวางคำจำกัดความของตัวแปรในสิ่งเหล่านี้และพวกเขาจะสามารถใช้ได้ในงานของฉัน ความแตกต่างระหว่างการวางคำจำกัดความลงไปdefaultsและvars? สิ่งที่ควรไปเป็นdefaultsและสิ่งที่ควรจะเข้ามาvars? มันสมเหตุสมผลไหมที่จะใช้ทั้งกับข้อมูลเดียวกัน? ฉันรู้ว่ามีความแตกต่างในลำดับความสำคัญ / ลำดับความสำคัญระหว่างทั้งสอง แต่ฉันต้องการที่จะเข้าใจสิ่งที่ควรไปที่ไหน สมมติว่าบทบาทของฉันจะสร้างรายการไดเรกทอรีในระบบเป้าหมาย ฉันต้องการให้รายการของไดเรกทอรีเริ่มต้นที่จะสร้าง แต่ต้องการอนุญาตให้ผู้ใช้แทนที่พวกเขาเมื่อใช้บทบาท นี่คือสิ่งที่ดูเหมือนว่า: --- - directories: - foo - bar - baz ฉันสามารถวางสิ่งนี้ลงในdefaults/main.ymlหรือในvars/main.ymlจากมุมมองของการดำเนินการมันจะไม่สร้างความแตกต่างใด ๆ - แต่มันควรจะไปที่ไหน?
151 ansible 

8
จะติดตั้งบทบาท Ansible Galaxy โดยอัตโนมัติได้อย่างไร?
เพลย์บุ๊ค / บทบาท Ansible ทั้งหมดของฉันถูกเช็คอินที่ git repo ของฉัน อย่างไรก็ตามสำหรับบทบาทของ Ansible Galaxy ฉันจะต้องดาวน์โหลดทีละเครื่องอย่างชัดเจนในทุกเครื่องที่ฉันต้องการเรียกใช้ Ansible เป็นเรื่องยากที่จะรู้ล่วงหน้าว่าบทบาทของ Ansible Galaxy ใดที่จำเป็นจนกว่า Ansible จะบ่นเกี่ยวกับบทบาทที่ขาดหายไปในรันไทม์ ควรจะจัดการการพึ่งพาบทบาท Ansible Galaxy อย่างไร? ฉันต้องการให้พวกเขาตรวจสอบใน git repo ของฉันพร้อมกับโค้ด ansible ที่เหลือของฉันหรือให้พวกเขาระบุและดาวน์โหลดโดยอัตโนมัติเมื่อฉันเรียกใช้ Ansible บนเครื่องใหม่


3
วิธีทำมัลติไลน์เชลล์สคริปต์ใน Ansible
ตอนนี้ฉันใช้เชลล์สคริปต์ใน ansible ซึ่งจะอ่านได้ง่ายขึ้นมากถ้ามันอยู่ในหลายบรรทัด - name: iterate user groups shell: groupmod -o -g {{ item['guid'] }} {{ item['username'] }} ....more stuff to do with_items: "{{ users }}" ไม่แน่ใจว่าจะอนุญาตสคริปต์แบบหลายบรรทัดในโมดูล Ansible เชลล์ได้อย่างไร
126 shell  ansible 

7
วิธีง่ายๆในการสร้าง dir ที่ไม่มีอยู่โดยอัตโนมัติใน ansible คืออะไร
ใน Ansible playbook ของฉันหลาย ๆ ครั้งฉันต้องสร้างไฟล์ที่นั่น - name: Copy file template: src: code.conf.j2 dest: "{{project_root}}/conf/code.conf" หลายครั้งที่confผช. ไม่อยู่ที่นั่น จากนั้นฉันต้องสร้างงานเพิ่มเพื่อสร้างผบ. นั้นก่อน มีวิธีง่ายๆในการสร้าง dir โดยอัตโนมัติหรือไม่หากไม่มีตัวเลือกบางอย่าง
117 ansible 

3
จะรันงานอย่างไรเมื่อไม่ได้กำหนดตัวแปรใน ansible?
ฉันกำลังมองหาวิธีดำเนินงานเมื่อตัวแปร ansible ไม่ได้ลงทะเบียน / ไม่ได้กำหนดเช่น -- name: some task command: sed -n '5p' "{{app.dirs.includes}}/BUILD.info" | awk '{print $2}' when: (! deployed_revision) AND ( !deployed_revision.stdout ) register: deployed_revision

10
จะสร้างไฟล์เปล่าด้วย Ansible ได้อย่างไร?
วิธีที่ง่ายที่สุดในการสร้างไฟล์เปล่าโดยใช้ Ansible คืออะไร? ฉันรู้ว่าฉันสามารถบันทึกไฟล์เปล่าลงในfilesไดเร็กทอรีจากนั้นคัดลอกไปยังโฮสต์ระยะไกล แต่ฉันพบว่าค่อนข้างไม่น่าพอใจ อีกวิธีหนึ่งคือการแตะไฟล์บนโฮสต์ระยะไกล: - name: create fake 'nologin' shell file: path=/etc/nologin state=touch owner=root group=sys mode=0555 แต่แล้วไฟล์ก็ถูกแตะทุกครั้งโดยแสดงเป็นเส้นสีเหลืองในบันทึกซึ่งก็ไม่น่าพอใจ ... มีวิธีแก้ไขปัญหาง่ายๆนี้ที่ดีกว่านี้หรือไม่?
115 file  ansible 

6
จะตั้งค่า host_key_checking = false ในไฟล์สินค้าคงคลังได้อย่างไร
ฉันต้องการใช้ansible-playbookคำสั่งแทน " vagrant provision" อย่างไรก็ตามการตั้งค่าhost_key_checking=falseในhostsไฟล์ดูเหมือนจะไม่ทำงาน # hosts file vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1 host_key_checking=false มีตัวแปรการกำหนดค่าภายนอกVagrantfileที่สามารถแทนที่ค่านี้ได้หรือไม่
113 ansible 

5
ตัวแปรที่มีเส้นทางไปยัง ansible-playbook ปัจจุบันที่กำลังดำเนินการอยู่?
มีตัวแปร ansible ที่มีเส้นทางสัมบูรณ์ไปยัง ansible-playbook ปัจจุบันที่กำลังดำเนินการอยู่หรือไม่? บริบทบางอย่าง: ฉันกำลังรัน / สร้างสคริปต์ ansible localhostเพื่อกำหนดค่า mysql docker และต้องการเมานต์ปริมาณข้อมูลที่สัมพันธ์กับสคริปต์ ansible ตัวอย่างเช่นสมมติว่าผมได้เช็คเอาท์ที่เก็บไป~/branch1/แล้วผมทำงานผมก็คิดว่ามันควรบันทึกเสียงเพื่อansible-playbook dev.yml ~/branch1/.docker_volume/ถ้าฉันเรียกใช้จาก~/branch2นั้นควรกำหนดค่าระดับเสียงเป็น~/branch2/.docker_volume/.
113 ansible 

11
แทนที่โฮสต์ตัวแปรของ Ansible playbook จากบรรทัดคำสั่ง
นี่คือส่วนหนึ่งของ playbook ที่ฉันใช้ ( server.yml): - name: Determine Remote User hosts: web gather_facts: false roles: - { role: remote-user, tags: [remote-user, always] } ไฟล์โฮสต์ของฉันมีกลุ่มเซิร์ฟเวอร์ที่แตกต่างกันเช่น [web] x.x.x.x [droplets] x.x.x.x ตอนนี้ผมต้องการที่จะดำเนินการansible-playbook -i hosts/<env> server.ymlและแทนที่hosts: webจากserver.ymlการเรียกใช้ PlayBook [droplets]นี้ ฉันสามารถแทนที่เป็นการปิดครั้งเดียวโดยไม่แก้ไขserver.ymlโดยตรงได้หรือไม่ ขอบคุณ.

11
คัดลอกไฟล์หลายไฟล์ด้วย Ansible
ฉันจะคัดลอกไฟล์มากกว่าหนึ่งไฟล์ไปยังโหนดระยะไกลโดย Ansible ในงานได้อย่างไร ฉันพยายามทำสำเนาบรรทัดโมดูลการคัดลอกในงานของฉันเพื่อกำหนดไฟล์ แต่จะคัดลอกเฉพาะไฟล์แรกเท่านั้น
108 ansible 

2
รันงานเฉพาะในกรณีที่โฮสต์ไม่ได้อยู่ในกลุ่ม
ฉันต้องการเรียกใช้งานที่ตอบได้ก็ต่อเมื่อโฮสต์ของ playbook ปัจจุบันไม่ได้อยู่ในกลุ่มใดกลุ่มหนึ่ง ในรหัสกึ่งหลอก: - name: my command command: echo stuff when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}" ฉันควรทำอย่างไร?
107 ansible 

7
ตอบได้ - ใช้ค่าเริ่มต้นหากไม่ได้กำหนดตัวแปร
ฉันกำลังปรับแต่งusersการสร้างlinux ภายในบทบาทของฉัน ฉันต้องการที่จะให้ผู้ใช้ปรับแต่งบทบาทของฉันhome_directory, group_name, ,namepassword ฉันสงสัยว่ามีวิธีที่ยืดหยุ่นกว่าในการจัดการกับค่าเริ่มต้นหรือไม่ ฉันรู้ว่ารหัสด้านล่างเป็นไปได้: - name: Create default user: name: "default_name" when: my_variable is not defined - name: Create custom user: name: "{{my_variable}}" when: my_variable is defined แต่อย่างที่ฉันพูดไปมีตัวแปรที่เป็นทางเลือกมากมายและสิ่งนี้สร้างความเป็นไปได้มากมาย มีบางอย่างเหมือนโค้ดด้านบนหรือไม่? user: name: "default_name", "{{my_variable}}" ควรตั้งรหัสname="default_name"เมื่อmy_variableไม่ได้กำหนด ฉันสามารถตั้งค่าตัวแปรทั้งหมดdefaults/main.ymlและสร้างผู้ใช้เช่นนั้น: - name: Create user user: name: "{{my_variable}}" แต่ตัวแปรเหล่านั้นอยู่ในแฮชที่ใหญ่มากและมีแฮชบางตัวอยู่ภายในแฮชที่ไม่สามารถเป็นค่าเริ่มต้นได้

22
การสร้างผู้ใช้และรหัสผ่านใหม่ด้วย Ansible
ฉันมีงานที่ตอบได้ซึ่งสร้างผู้ใช้ใหม่บน ubuntu 12.04; - name: Add deployment user action: user name=deployer password=mypassword มันเสร็จสมบูรณ์ตามที่คาดไว้ แต่เมื่อฉันเข้าสู่ระบบในฐานะผู้ใช้นั้นและพยายาม sudo ด้วยรหัสผ่านฉันตั้งไว้เสมอว่ามันไม่ถูกต้อง ผมทำอะไรผิดหรือเปล่า?
103 bash  shell  ubuntu  ansible 

10
ตอบได้: รับที่อยู่ IP ของโฮสต์เป้าหมายปัจจุบัน
คุณรับที่อยู่ IP ปัจจุบันของโฮสต์ในบทบาทได้อย่างไร? ฉันรู้ว่าคุณสามารถรับรายชื่อกลุ่มที่โฮสต์เป็นสมาชิกและชื่อโฮสต์ของโฮสต์ได้ แต่ฉันไม่พบวิธีแก้ปัญหาในการรับที่อยู่ IP คุณสามารถรับชื่อโฮสต์โดยใช้{{inventory_hostname}}และกลุ่มโดยใช้{{group_names}} ฉันได้ลองสิ่งต่างๆเช่น{{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }} และip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"

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