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

12
จำกัด Playbooks Ansible ที่ปลอดภัยไปยังเครื่องเดียวหรือไม่
ฉันกำลังใช้ Ansible สำหรับงานการจัดการผู้ใช้อย่างง่ายด้วยคอมพิวเตอร์กลุ่มเล็ก ๆ ขณะนี้ฉันตั้ง playbooks ไว้hosts: allและไฟล์โฮสต์ของฉันเป็นเพียงกลุ่มเดียวที่มีรายการเครื่องทั้งหมด: # file: hosts [office] imac-1.local imac-2.local imac-3.local ฉันพบตัวเองบ่อยครั้งที่ต้องกำหนดเป้าหมายเครื่องเดียว ansible-playbookขีด จำกัด ของคำสั่งที่สามารถเล่นเช่นนี้ ansible-playbook --limit imac-2.local user.yml แต่ดูเหมือนจะเปราะบางโดยเฉพาะอย่างยิ่งสำหรับ playbook ที่อาจทำลายล้าง การปล่อยlimitธงหมายความว่าเพลย์ลิสต์จะถูกเรียกใช้ทุกที่ เนื่องจากเครื่องมือเหล่านี้มีการใช้งานเป็นครั้งคราวดูเหมือนว่าน่าจะเป็นขั้นตอนในการเล่นที่ไม่สามารถป้องกันได้ดังนั้นเราจึงไม่ได้ทำอะไรหลายเดือนนับจากนี้ มีวิธีปฏิบัติที่ดีที่สุดสำหรับการ จำกัด playbook ให้ทำงานกับเครื่องเดียวหรือไม่? playbooks ควรจะไม่เป็นอันตรายหากรายละเอียดที่สำคัญบางอย่างถูกปล่อยออกมา

10
ฉันจะส่งตัวแปรไปยังเพลย์บุ๊คที่สามารถเล่นได้ในบรรทัดคำสั่งได้อย่างไร
ฉันยังใหม่กับ ansible และสงสัยว่าจะทำอย่างไรต่อไปนี้ใช้งานไม่ได้ ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors" django_fixturesตัวแปรของฉันอยู่ที่ไหน

19
Ansible ล้มเหลวด้วย / bin / sh: 1: / usr / bin / python: ไม่พบ
ฉันพบข้อผิดพลาดที่ไม่เคยเห็นมาก่อน นี่คือคำสั่งและข้อผิดพลาด: $ ansible-playbook create_api.yml PLAY [straw] ****************************************************************** GATHERING FACTS *************************************************************** failed: [104.55.47.224] => {"failed": true, "parsed": false} /bin/sh: 1: /usr/bin/python: not found TASK: [typical | install required system packages] ***************************** FATAL: no hosts matched or all hosts have already failed -- aborting PLAY RECAP ******************************************************************** to retry, use: --limit …

5
คุณจะหยุด Ansible จากการสร้างไฟล์. retry ในโฮมไดเร็กตอรี่ได้อย่างไร?
เมื่อ Ansible มีปัญหาในการเล่นกับโฮสต์มันจะส่งชื่อของโฮสต์ไปยังไฟล์ในโฮมไดเร็กตอรี่ของผู้ใช้ที่ลงท้ายด้วย '.retry' สิ่งเหล่านี้มักไม่ได้ใช้และทำให้เกิดความยุ่งเหยิงมีวิธีปิดหรือวางในไดเรกทอรีอื่นหรือไม่

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

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โดยตรงได้หรือไม่ ขอบคุณ.

4
เขียนตัวแปรไปยังไฟล์ใน Ansible
ฉันกำลังดึง JSON ผ่านโมดูล URI และต้องการเขียนเนื้อหาที่ได้รับลงในไฟล์ ฉันสามารถรับเนื้อหาและส่งออกไปยังดีบักเกอร์ได้ดังนั้นฉันจึงทราบว่าได้รับเนื้อหาแล้ว แต่ฉันไม่รู้แนวทางปฏิบัติที่ดีที่สุดในการเขียนไฟล์

5
Ansible Playbooks เทียบกับบทบาท
ตามเอกสาร Ansible Playbook คือ: ... พื้นฐานสำหรับการจัดการการกำหนดค่าที่เรียบง่ายและระบบการปรับใช้หลายเครื่องซึ่งแตกต่างจากที่มีอยู่แล้วและเป็นระบบที่เหมาะอย่างยิ่งกับการปรับใช้แอปพลิเคชันที่ซับซ้อน และตามเอกสารเดียวกันอีกครั้งบทบาท คือ: ... วิธีโหลดไฟล์ vars_files งานและตัวจัดการโดยอัตโนมัติตามโครงสร้างไฟล์ที่รู้จัก การจัดกลุ่มเนื้อหาตามบทบาทยังช่วยให้สามารถแบ่งปันบทบาทกับผู้ใช้รายอื่นได้ง่าย อย่างไรก็ตามความแตกต่างระหว่างสิ่งเหล่านี้และกรณีการใช้งานที่แตกต่างกันนั้นไม่ชัดเจนสำหรับฉันในทันที ตัวอย่างเช่นหากฉันกำหนดค่า/etc/ansible/hostsไฟล์ของฉันให้มีลักษณะดังนี้: [databases] mydb01.example.org mydb02.example.org [mail_servers] mymail01.example.org mymail_dr.example.org ... แล้วนี่ " [databases]" รายการ ... บทบาทอะไร? หรือชื่อไฟล์ YAML ของ playbook ที่ไหนสักแห่ง? หรืออย่างอื่น?!? หากมีใครสามารถอธิบายความแตกต่างของสิ่งเหล่านี้ให้ฉันเข้าใจเกี่ยวกับ Ansible ของฉันจะดีขึ้นมาก! Playbook vs Role vs [databases]และรายการที่คล้ายกันใน/etc/ansible/hosts ถ้า Playbooks ถูกกำหนดไว้ในไฟล์ YAML แล้ว Roles จะกำหนดไว้ที่ใด? นอกเหนือจากสิ่งansible.cfgมีชีวิตบนเซิร์ฟเวอร์ …

4
ตอบได้: ตั้งค่าตัวแปรเป็นเนื้อหาไฟล์
ฉันใช้โมดูล ec2 กับansible-playbookฉันต้องการตั้งค่าตัวแปรเป็นเนื้อหาของไฟล์ นี่คือวิธีที่ฉันกำลังทำอยู่ Var กับชื่อไฟล์ งานเชลล์ไปcatยังไฟล์ ใช้ผลลัพธ์ของการcatส่งผ่านไปยังโมดูล ec2 ตัวอย่างเนื้อหาของ playbook ของฉัน vars: amazon_linux_ami: "ami-fb8e9292" user_data_file: "base-ami-userdata.sh" tasks: - name: user_data_contents shell: cat {{ user_data_file }} register: user_data_action - name: launch ec2-instance local_action: ... user_data: "{{ user_data_action.stdout }}" ฉันคิดว่ามีวิธีที่ง่ายกว่านี้มาก แต่ฉันไม่พบขณะค้นหาเอกสาร Ansible

6
Ansible: stdout ของคำสั่ง Store ในตัวแปรใหม่?
ภายใน playbook ของฉันฉันต้องการสร้างตัวแปรที่ถือเอาท์พุทของคำสั่งภายนอก หลังจากนั้นฉันต้องการใช้ประโยชน์จากตัวแปรนั้นในเทมเพลตสองสามรายการ นี่คือส่วนที่เกี่ยวข้องของ Playbook: tasks: - name: Create variable from command command: "echo Hello" register: command_output - debug: msg="{{command_output.stdout}}" - name: Copy test service template: src=../templates/test.service.j2 dest=/tmp/test.service - name: Enable test service shell: systemctl enable /tmp/test.service - name: Start test service shell: systemctl start test.service และสมมติว่านี่คือเทมเพลตของฉัน: [Unit] Description=MyApp …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.