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

Ansible เป็นแพลตฟอร์มซอฟต์แวร์โอเพ่นซอร์สสำหรับการกำหนดค่าและการจัดการคอมพิวเตอร์ มันรวมการปรับใช้ซอฟต์แวร์หลายโหนดดำเนินงาน ad-hoc และการจัดการการกำหนดค่า

2
มีวิธีตรวจสอบว่าคีย์พจนานุกรมไม่ได้ถูกกำหนดไว้ในงานที่ต้องทำหรือไม่?
ดังนั้นในรหัสของฉันฉันมีงาน - name: cool task shell: 'touch iamnotcool.txt' when: me.cool is not defined และ vars ของฉันดูเหมือน --- me: stumped: yes ดังนั้นเมื่อฉันรันงานมันกลับมาพร้อมกับข้อผิดพลาดต่อไปนี้ {"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.

3
การสร้าง symlink ด้วย ansible และรายการตัวแปร
ใหม่ล่าสุดสำหรับ ansible - ฉันพยายามเชื่อมโยงหลาย ๆ ไฟล์ในไดเรกทอรี src ไปยังปลายทาง .. file: src: /drupal/drush/{{ item.path }}.aliases.drushrc.php dest: /home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php with_items: - { path: 'new', dest: 'new' } - { path: 'vmdev', dest: 'vmdev' } state: link ฉันได้รับข้อผิดพลาด: fatal: [vmdev] => One or more undefined variables: 'item' is undefined ใครบางคนชี้ให้ฉันในทิศทางที่ถูกต้อง .. ? …
17 ansible 

5
เมื่อใดควรใช้ตัวจัดการการกำหนดค่า (เช่น Puppet / Chef / Ansible) เมื่อใด
ที่ทำงานปัจจุบันของฉันฉันดูแลเครื่องโฮสต์ VMware สองเครื่องเครื่อง OpenBSD จริงสามเครื่อง Debian VM และ Windows Server VM หกเครื่อง (2008/2012) ฉันกำลังพิจารณาใช้เครื่องมือจัดการการกำหนดค่าเช่น Puppet หรือ Chef มีเหตุผลหรือค่าใช้จ่ายในการเรียนรู้ของเครื่องมือมีประโยชน์มากกว่าหรือไม่ จุดเปลี่ยนอยู่ตรงไหนระหว่างความสามารถในการจัดการและค่าดำเนินการ

7
Ansible: ฉันสามารถใช้ vars_files ได้หรือไม่เมื่อมีบางไฟล์
นั่นคือส่วนที่: vars_files: - vars/vars.default.yml - vars/vars.yml หากไฟล์vars/vars.ymlไม่มีอยู่ - นี่เป็นข้อผิดพลาด ERROR: file could not read: /.../vars/vars.yml ฉันจะโหลดตัวแปรเพิ่มเติมจากไฟล์นี้เฉพาะเมื่อมีอยู่ได้อย่างไร (ไม่มีข้อผิดพลาด)
17 ansible 

1
ฉันจะผนวกกับ PATH ในขณะที่ใช้งานโมดูล pip ของ Ansible ได้อย่างไร
ฉันกำลังพยายามติดตั้ง psycopg2 ใน Python virtualenv ด้วยpipโมดูลของ Ansible แต่ฉันต้องเพิ่มรายการไปยัง PATH เพื่อสร้างอย่างถูกต้อง (ต้องทราบเส้นทางไปยังไดเรกทอรีที่มีpg_config) ฉันเห็นว่าฉันสามารถส่งผ่านenvironmentไปยังpipโมดูลได้ แต่ฉันไม่แน่ใจว่าจะทำสิ่งที่เตรียมPATHไว้ล่วงหน้าได้อย่างไรแทนที่จะเขียนทับ ที่นี่ฉันพยายามที่จะเสริมเส้นทางด้วยไดเรกทอรีที่จำเป็น แต่มันเขียนทับ virtualenv PATHและล้มเหลว: - pip: name: psycopg2 virtualenv: /path/to/my/venv environment: PATH: /usr/pgsql-9.3/bin:$PATH

5
ตัวแปร msg debug พิมพ์ได้
ฉันพยายามพิมพ์mosh_versionตัวแปรที่ลงทะเบียนก่อนหน้านี้โดยใช้debug msgคำสั่งansible เช่นนี้: - name: Print mosh version debug: msg="Mosh Version: {{ mosh_version.stdout }}" มันไม่ทำงานและพิมพ์ข้อผิดพลาดต่อไปนี้: Note: The error may actually appear before this position: line 55, column 27 - name: Print mosh version debug: msg="Mosh Version: {{ mosh_version.stdout }}" ^ We could be wrong, but this one looks like it …

7
วิธีการดึงไฟล์หลายไฟล์จากเครื่องระยะไกลไปยังท้องถิ่นด้วย Ansible
ฉันต้องการคัดลอกไฟล์จากรีโมตไดเร็กทอรีไปยังโลคัลไดเร็กทอรีด้วย Ansible แต่โมดูลการดึงข้อมูลช่วยให้ฉันสามารถคัดลอกไฟล์เดียวเท่านั้น ฉันมีเซิร์ฟเวอร์จำนวนมากที่ฉันต้องการไฟล์ (ไดเรกทอรีเดียวกันแต่ละเซิร์ฟเวอร์) และตอนนี้ฉันไม่สามารถทำได้ด้วย Ansible ความคิดใด ๆ
17 linux  copy  ansible 

1
สร้างและต่อเชื่อมวอลุ่ม GlusterFS ด้วย Ansible
ฉันใช้ GlusterFS เพื่อสร้างและติดตั้งไดรฟ์ข้อมูลใน 4 เครื่อง พูดเช่นเครื่องจะเรียกว่าmachine1, machine2, และmachine3machine4 เพื่อนของฉันได้รับการตรวจสอบเรียบร้อยแล้ว ฉันใช้คำสั่งต่อไปนี้เพื่อสร้างวอลลุ่มของฉัน: sudo gluster volume create ssl replica 2 transport tcp machine1:/srv/gluster/ssl machine2:/srv/gluster/ssl machine3:/srv/gluster/ssl machine4:/srv/gluster/ssl force จากนั้นฉันก็เริ่มโวลุ่มด้วย: sudo gluster volume start ssl ฉันได้ติดตั้งไดเรกทอรี/myproject/sslโดยใช้คำสั่งต่อไปนี้: sudo mount -t glusterfs machine1:/ssl /myproject/ssl เมื่อติดตั้งในแต่ละเครื่องทุกอย่างทำงานได้ตามที่คาดหวังและ/myproject/sslไดเรกทอรีมีข้อมูลที่ใช้ร่วมกันในทุกเครื่อง คำถามคือฉันจะทำสิ่งนี้ได้อย่างไรบนโลกใบนี้ นี่คือความพยายามของฉันในการทำทั้งสองคำสั่งด้วยวิธีที่เข้าใจได้ - name: Configure Gluster volume. gluster_volume: state: present name: "{{ …

2
วิธีการเรียกใช้หลาย playbooks ตามลำดับด้วย Ansible
ฉันกำลังทำงานกับ Playbooks ของ Ansible หลายตัวเพื่อหมุนเซิร์ฟเวอร์ใหม่ มี playbooks ที่แตกต่างกันประมาณ 15 รายการที่ฉันต้องใช้ในการสั่งซื้อเฉพาะเพื่อให้เซิร์ฟเวอร์หมุนได้สำเร็จ ความคิดเริ่มต้นของฉันคือการเขียนเชลล์สคริปต์ที่ดำเนินการansible-playbook playbook_name.ymlและทำซ้ำมันหนึ่งรายการสำหรับ playbook แต่ละอันที่ฉันต้องเรียกใช้ มีวิธีที่ชาญฉลาด / ดีกว่าในการทำเช่นนี้โดยใช้ playbook หลักและถ้าเป็นเช่นนั้นจะมีลักษณะอย่างไร (ตัวอย่างชื่นชม) ฉันสามารถเขียน playbook แบบเสาหินเดียวที่ทำได้ทั้งหมด แต่มีบางบทละครที่ทำงานเป็น root ก่อนแล้วจึงเป็นผู้ใช้ sudo ในภายหลัง

3
เปลี่ยนค่าเริ่มต้นของการเปลี่ยนแปลงได้ตามเงื่อนไข
เป็นไปได้หรือไม่ที่จะเปลี่ยนค่าเริ่มต้นของตัวแปรบทบาทตามเงื่อนไขบางประการ (เช่นค่าของตัวแปรอื่น) รายละเอียด ฉันมีสองตัวแปรที่เกี่ยวข้องสำหรับคำสั่งและenvcomposer_opts หากทั้งคู่ถูกปล่อยไว้ที่ค่าเริ่มต้น ( env = "prod"และcomposer_opts = "--no-dev") ทุกอย่างก็โอเค ถ้าฉันเปลี่ยนenvไปdevเริ่มต้นสำหรับคนอื่น ๆ จะทำลายคำสั่งของฉันดังนั้นฉันมักจะต้องตั้งค่าทั้ง เป็นไปได้ไหมที่จะหลีกเลี่ยงปัญหานี้โดยการตั้งค่าเริ่มต้นตามเงื่อนไขด้วยสคริปต์ที่กำหนดเอง / หาก สำคัญ: ฉันไม่ต้องการที่จะเสมอตั้งcomposer_optsค่าตามenvค่า ฉันต้องการตั้งค่าเฉพาะเมื่อยังไม่ได้ตั้งค่า (เช่นค่าเริ่มต้นแบบไดนามิก) pseudocode ฉันต้องการทำอะไรเช่นนี้ (รหัสต่อไปนี้ไม่ถูกต้องเพียงรหัสเทียมเพื่อแสดงความต้องการของฉัน) --- # defaults/main.yml env: prod composer_opts: when: "{{env}}" = 'prod' '--no-dev --optimize-autoloader --no-interaction' when: "{{env}}" = 'dev' ''
16 ansible 

3
Ansible with_items ไม่ได้พิมพ์รายการทั้งหมดใช่ไหม
ฉันจะรักษาความปลอดภัยคีย์ SSL โดยอัตโนมัติดังนี้: - name: Find ssl keys find: paths="/etc/ssl/" patterns="*.key" recurse=yes register: secure_ssl_keys_result - name: Secure ssl keys file: path={{ item.path }} user=root group=root mode=600 with_items: secure_ssl_keys_result.files ตอนนี้สำหรับทุกรายการมีข้อความบันทึกขนาดใหญ่ที่มีเนื้อหาทั้งหมดของรายการ: ตกลง: [127.0.0.1] => (รายการ = {u'uid ': 0, u'woth': False, u'mtime ': 1454939377.264, u'inode': 400377, u'isgid ': เท็จ, u' ขนาด ': …
16 ansible 

2
วิธีล้างข้อมูลจากบทบาทที่ไม่ได้ใช้อีกต่อไปบนเซิร์ฟเวอร์
สมมติว่าฉันมีโฮสต์ซึ่งก็คือเว็บเซิร์ฟเวอร์ที่ติดตั้งบทบาท Ansible ที่เกี่ยวข้องnginxดำเนินการกำหนดค่าที่จำเป็นบางอย่าง/etc/nginxและเปิดพอร์ต 80 และ 443 ในไฟร์วอลล์ บางครั้งฉันต้องการให้โฮสต์นั้นไม่ได้เป็นเว็บเซิร์ฟเวอร์อีกต่อไปเพราะด้วยเหตุผลบางอย่างที่ฉันย้ายบริการนั้นไปที่อื่น เพียงแค่ลบเซิร์ฟเวอร์ออกจาก[webservers]ในสินค้าคงคลังจะทำให้ขยะในเซิร์ฟเวอร์ เป็นการดีที่ฉันต้องการถอนการติดตั้งnginxลบ/etc/nginxไดเรกทอรี (และบางไดเรกทอรีอื่น ๆ ) และปิดพอร์ต 80 และ 443 ในไฟร์วอลล์ ใน Puppet ฉันทำได้ โฮสต์ที่เป็นเว็บเซิร์ฟเวอร์จะมีสิ่งนี้ในการกำหนดค่า: class { 'nginx': ensure => present, } และทั้งหมดที่ฉันต้องทำคือแทนที่ "ปัจจุบัน" ด้วย "ขาด" หากnginxคลาสนั้นเขียนได้ดีจะยกเลิกการเปลี่ยนแปลงที่เกิดขึ้น (โดยทั่วไปผู้ดูแลระบบจะแทนที่ "ปัจจุบัน" ด้วย "ขาด" และหลังจากนั้นเมื่อเขาแน่ใจว่าโฮสต์ที่ได้รับผลกระทบทั้งหมดได้ยกเลิกการกำหนดค่าเขาจะลบรายการออกจากรายการ) ยิ่งกว่านั้นฉันคิดว่าโมดูลไฟร์วอลล์ Puppet จะลบกฎไฟร์วอลล์ที่ไม่พบในรายการโดยอัตโนมัติอีกต่อไป ดังนั้นฉันคิดว่าสำหรับไฟร์วอลล์คุณไม่จำเป็นต้องทำสิ่งที่ "ขาด" ข้างต้นไฟร์วอลล์จะปิดโดยอัตโนมัติ ฉันจะบรรลุสิ่งเหล่านี้ด้วย Ansible ได้อย่างไร
15 ansible 

4
พูดซ้ำพจนานุกรมที่มีรายการ
ฉันโหลดตัวแปรต่อไปนี้ผ่านinclude_vars: access: username-foo: - path: / permissions: rwX recursive: true username-bar: - path: / permissions: rX - path: /css permissions: rwX recursive: true - path: /data permissions: rX - path: /data/reviews.yml permissions: rw - path: /js permissions: rX - path: /js/*.js permissions: rw ฉันต้องการดึงข้อมูลนี้ให้กับshellคำสั่งเพื่อตั้งค่าการอนุญาตที่เหมาะสม ฉันลองเทคนิคบางอย่างจากที่นี่: http://docs.ansible.com/playbooks_loops.html แต่ไม่สามารถหาวิธีแก้ปัญหาการทำงานได้ เป็นไปได้ที่จะย้ำโครงสร้างนี้หรือไม่? ถ้าไม่ฉันจะจัดโครงสร้างใหม่เพื่อให้มันทำงานได้อย่างไร เป็นไปได้ไหมที่จะทำเช่นนี้โดยไม่ทำผิดกฎ …
15 ansible 

2
วิธีการตรวจสอบการตอบสนอง JSON จากคำขอ uri กับ Ansible?
ฉันมีงาน Ansible ที่ทำให้คำขอ URI ไปยังเว็บไซต์เพื่อรับการตอบกลับ JSON ฉันต้องการให้ Ansible ทำบางสิ่งหากตัวแปร JSON ที่ซ้อนกันถูกกำหนดและอย่างอื่นถ้าไม่ใช่ - name: Get JSON from the Interwebs uri: url="http://whatever.com/jsonresponse" return_content=yes register: json_response - name: Write nested JSON variable to disk copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt" โปรดทราบว่าการใช้ignore_errorsงานได้เฉพาะกับคำสั่งของงานที่ล้มเหลวไม่ใช่สำหรับการตรวจสอบค่าที่ไม่ได้กำหนดในโครงสร้างข้อมูลที่ซ้อนอยู่ภายในเทมเพลต Jinja ดังนั้นหากjson_response.json.nested1.nested2ไม่ได้ถูกกำหนดไว้งานนี้จะล้มเหลวแม้จะignore_errors=yesถูกตั้งค่าไว้ ฉันจะให้ playbook นี้เก็บค่าเริ่มต้นได้/tmp/foo.txtอย่างไรหากคำขอล้มเหลวหรือหากคำขอไม่ได้กำหนดค่าซ้อนที่เหมาะสมไว้
15 ansible 

2
ทำไม ansible จึงไม่มีโมดูลเก็บถาวร
Googling สำหรับเบิ้ลสร้าง tarไม่ได้ให้ผลดีใด ๆ และในขณะที่มีการยกเลิกการเก็บถาวรโมดูลไม่มีการเก็บโมดูล ฉันอาจจะแก้มันด้วยโมดูลคำสั่งแต่การใหม่ใน Ansible ทำให้ฉันคิดว่าฉันทำผิด ฉันค่อนข้างแน่ใจว่าฉันไม่ใช่คนแรกที่ต้องการทำการอัปโหลดซอร์สโค้ดไปยังเซิร์ฟเวอร์ที่ใช้งานจริง เหตุใดจึงไม่มีโมดูลเก็บถาวรและชุมชนจัดการกรณีการใช้นี้อย่างไร
15 ansible 

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