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

ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ Ansible ซึ่งเป็นเครื่องมืออัตโนมัติแบบโอเพนซอร์สที่เกี่ยวข้องกับการใช้ Ansible สำหรับหัวข้อต่างๆเช่นการจัดเตรียมระบบคลาวด์การจัดการการกำหนดค่าการปรับใช้แอปพลิเคชันเป็นต้น

5
Ansible ต่างจากเพียงแค่รัน bash shell ใน Vagrant อย่างไร
ทีมดูแลระบบไอทีที่มีประสบการณ์ในการใช้เชลล์สคริปต์เพื่อแก้ปัญหาของพวกเขากำลังพิจารณาที่จะเริ่มใช้ Ansible แทน มีความแตกต่างและเหตุผลที่ดีในการเริ่มใช้ Ansible vs. เพื่อดำเนินการเขียนเชลล์สคริปต์ต่อไปหรือไม่

5
จะทดสอบการจัดเตรียมและการกำหนดค่าในการตั้งค่า Ansible ได้อย่างไร
ดูที่การพยายามสร้างความยืดหยุ่นในการตั้งค่า Ansible ของเราซึ่งเกี่ยวข้องกับการจัดสรรและการกำหนดค่า ฉันเข้าใจวิธีการทดสอบสองสามอย่างในด้านการกำหนดค่าของสิ่งต่าง ๆ แต่ฉันสงสัยว่าจะนำการทดสอบไปใช้ในด้านการจัดเตรียมสิ่งต่าง ๆ ได้อย่างไรและหากมีเครื่องมือใด ๆ ที่สามารถช่วยในการใช้งานประเภทนี้ ขณะนี้การทดสอบจำนวนมากของเราทำเสร็จแล้วในช่วง playbook ซึ่งทำให้รู้สึกเป็นอย่างมากสำหรับ "สิ่งที่จะเกิดขึ้น" มีบริการขึ้นมาคือ vip ที่มีให้ใช้งาน async นี้เสร็จแล้ว "แต่สิ่งที่เกี่ยวข้องกับฉันคือความสามารถในการจัดการ การกำหนดค่าที่ทั้งแอปพลิเคชันและชั้นการจัดเตรียม (เช่นการกำหนดค่า VM) ฉันรู้ว่า Ansible ไม่ใช่เครื่องมือที่ดีที่สุดสำหรับการทำงานกับการตั้งค่าดริฟท์ แต่ฉันอยากรู้อยากเห็นความคิดเห็นของคุณเอง หากคุณมีสิ่งที่จะทำให้กระบวนการอัตโนมัติดียิ่งขึ้น (เรามีสคริปต์ที่น่าเกลียดอยู่สองสามฉบับซึ่งรายงานกลับมาเป็นรายวัน) หมายเหตุ : ตอนนี้เรามีเงื่อนไขบางประการที่อาจเกิดการ reprovision ขึ้นมาใหม่ (เช่นการสร้างใหม่จากการสำรองข้อมูลปัญหาของระบบที่สำคัญ) แต่โดยทั่วไปแล้วมันจะวนซ้ำผ่านงานการกำหนดค่า ansible บางอย่างและไม่คิดอีกต่อไป

4
จะใส่รหัสผ่าน ansible-vault ได้ที่ไหน
เราวางแผนที่จะใช้ตู้เซฟนิรภัยในโครงการของเราเพื่อป้องกันการรั่วไหลของรหัสผ่านหรือกุญแจในคอมไพล์ แนวคิดคือการใส่ข้อมูลที่ละเอียดอ่อนทั้งหมดของเราลงในไฟล์ธรรมดาจากนั้นเข้ารหัสไฟล์นี้ด้วย ansible-vault โดยใช้รหัสผ่านก่อนที่จะพุชเข้าคอมไพล์ ในการถอดรหัสไฟล์เราจะต้องส่งรหัสผ่านห้องนิรภัยไปยัง Ansible ฉันคิดว่ามีความเป็นไปได้ 3 อย่าง: เก็บไว้ในตัวแปรสภาพแวดล้อมของเซิร์ฟเวอร์ ส่งเป็นตัวเลือกไปยังคำสั่ง ansible-playbook เก็บไว้ในไฟล์ที่ไม่ใช่เวอร์ชัน มีตัวเลือกอื่น ๆ หรือไม่ซึ่งเป็นวิธีที่ดีที่สุด (และปลอดภัย) ในการจัดเก็บรหัสผ่าน ansible-vault เอกสารประกอบวิธีปฏิบัติที่ดีที่สุดของ ansible ไม่ได้พูดอะไรเกี่ยวกับเรื่องนี้

1
Git clean / smudge filter สำหรับความลับของห้องนิรภัย
ฉันกำลังพยายามตั้งค่าตัวกรอง clean / smudgeใน git ให้มีการเข้ารหัสและถอดรหัสไฟล์ที่มีความลับโดยอัตโนมัติผ่านคำสั่งansible-vault ความผิดปกติของคำสั่ง ansible-vault คือมันไม่ใช่ idempotent (มันสร้างไบนารีที่แตกต่างกันในแต่ละครั้งที่เรียกใช้กับข้อมูลเดียวกัน) ฉันเริ่มต้นด้วยการดำเนินงานข้อเสนอแนะในหน้าบล็อกนี้ น่าเสียดายที่มันไม่ทำงานอย่างถูกต้องเนื่องจากเมื่อใดก็ตามที่มีการเรียกรอยเปื้อน (ไม่ว่าจะเป็นเช็คเอาต์ git หรือเพียงแค่สถานะ git) ไฟล์ลับดูเหมือนว่าแก้ไขสำหรับ git แม้ว่ามันจะไม่ ดังนั้นฉันสงสัยว่า git จะเปรียบเทียบไบนารี่ที่เขามีในดัชนีกับไฟล์ปัจจุบันที่กรองแล้วหรือไม่และฉันพยายามสร้างสคริปต์เหล่านั้นดังนี้: #!/bin/sh -x # clean filter, it is invoked with %f if [ ! -r "$HOME/.vault_password" ]; then exit 1 fi tmp=`mktemp` cat > $tmp # get the …

2
ฉันสามารถข้ามการตรวจสอบคีย์โฮสต์ใน Ansible ได้หรือไม่
ฉันใช้งานเพลย์บุ๊ค Ansible ที่มีการแฮ็คข้อมูลอย่างละเอียดเพื่อทำงานกับพอร์ตที่ส่งต่อพอร์ตโดยพลการ ฉันได้รับงานล่วงหน้าเพื่อเปลี่ยนansible_portตัวแปรดังนั้นเมื่อฉันเริ่มทำงานจริงและบทบาทฉันได้รับแจ้งให้ยอมรับ hostkeys สำหรับ localhost ในพอร์ตสุ่ม เนื่องจากฉันไร้เดียงสาและไม่สนใจเกี่ยวกับความปลอดภัยฉันต้องการ ssh เพื่อยอมรับอัตโนมัติและเปลี่ยนเส้นทางไปยัง/dev/null(หรือไฟล์อื่นสำหรับการบันทึก) เป็นไปได้ไหม
19 ansible 

3
ข้อ จำกัด ของ Puppet ในการเปรียบเทียบกับ Ansible คืออะไร?
ฉันต้องการที่จะเข้าใจความแตกต่างระหว่างหุ่นกระบอกกับ Ansible โดยเฉพาะอย่างยิ่งข้อ จำกัด ของ Puppet ในการเปรียบเทียบกับ Ansible มีสิ่งใดบ้างที่คุณไม่สามารถทำได้ใน Puppet แต่คุณสามารถทำได้ใน Ansible? กล่าวอีกนัยหนึ่งว่าทำไมบางคนย้ายจากหุ่นไป Ansible

4
Ansible: มีตัวเลือกอื่นสำหรับการตรวจสอบ telnet ของพอร์ตที่เปิดอยู่หรือไม่
ฉันใหม่กับ Ansible นี่คืองานของฉัน ... ฉันมีโฮสต์มากกว่า 400 แห่งและฉันต้องตรวจสอบว่า 5 พอร์ตที่แตกต่างกันเปิดจากจุดสิ้นสุดไปยังเว็บเซิร์ฟเวอร์ของเราหรือไม่ ทีละคนฉันสามารถเข้าสู่ระบบและเรียกใช้: telnet mywebserver.com 443 telnet mywebserver.com 80 telnet mywebserver.com 8443 .. และอื่น ๆ .. โมดูลหรือปลั๊กอินใดที่สามารถใช้ใน Ansible เพื่อให้ฉันสามารถทำสิ่งนี้โดยอัตโนมัติและรายงานผลลัพธ์ (ไม่ว่าจะเปิดหรือปิดพอร์ต) กลับไปที่เซิร์ฟเวอร์ Ansible ของฉันหรือไม่
15 ansible  testing  ports 

2
ฉันจะเรียกใช้ ansible บนโฮสต์ได้ครั้งละหนึ่งตัวและทำลายความล้มเหลวได้อย่างไร
ฉันมีเพลย์บุ๊ค Ansible ที่ฉันต้องการอัปเดตอุปกรณ์ที่ไม่สม่ำเสมอตามลำดับ ฉันสามารถใช้งานserial:1ได้ แต่ฉันต้องการหยุด playbook โดยสิ้นเชิงถ้าฉันล้มเหลวดังนั้นฉันจึงสามารถแก้ไขได้ก่อนดำเนินการต่อแทนที่จะสะสมข้อผิดพลาด ฉันต้องการรีสตาร์ท playbook ที่โฮสต์เดียวกับที่ฉันหยุด ปัจจุบันใช้ Ansible v2.0 แต่ยังสามารถเปลี่ยนไปใช้เวอร์ชันที่ใหม่กว่าได้หากคุณลักษณะประเภทนั้นมีให้เฉพาะในเวอร์ชันที่ใหม่กว่าเท่านั้น
15 ansible 

1
คุณจะจัดการสินค้าคงคลังของ Spot อินสแตนซ์บน AWS ด้วย Ansible ได้อย่างไร
ฉันยังใหม่กับ Ansible ด้วยประสบการณ์บางอย่างใน Chef ฉันกำลังพิจารณาเรียนรู้และใช้ Ansible เพื่อจัดการสภาพแวดล้อม ฉันสงสัยว่าวิธีใดที่จะเป็นวิธีที่ดีที่สุดในการจัดการสินค้าคงคลังของจุดอินสแตนซ์ของ AWS ตัวอย่างเช่นเมื่ออินสแตนซ์จุดถูกปิด IP เก่าไม่เกี่ยวข้องอีกต่อไปในสินค้าคงคลังของโฮสต์ มีวิธีการทางเลือกอื่น ๆ สำหรับกรณีการใช้งานของสภาพแวดล้อมยืดหยุ่นหรือไม่?

3
ดำเนินการงาน Ansible หลายรายการด้วยรายการที่เหมือนกัน
ฉันใช้เพลย์ลิสต์ ansible เพื่อกำหนดค่า Apache สำหรับรายการไซต์ playbook ต้องคัดลอกเทมเพลตการกำหนดค่าโฮสต์เสมือนสำหรับแต่ละไซต์ไว้แล้วเปิดใช้งานแต่ละไซต์โดยใช้a2ensite: - name: Install apache site conf template: src=apache-sites-{{item}}-conf.j2 dest=/etc/apache2/sites-available/{{item}}.conf mode=0644 with_items: - sitea - siteb - sitec - sited - name: Enable site apache conf command: a2ensite {{item}} args: creates: /etc/apache2/sites-enabled/{{item}}.conf with_items: - sitea - siteb - sitec - sited ฉันไม่ชอบที่จะต้องทำซ้ำรายการเดียวกันสำหรับแต่ละงาน ฉันจะกำหนดค่า playbook …
13 ansible 

2
ฉันจะรันเพลย์บุ๊ค Ansible Azure ในขณะที่หลีกเลี่ยงการจัดเก็บข้อมูลรับรองในไฟล์ได้อย่างไร
พื้นหลัง เราใช้ Ansible เพื่อจัดเตรียมและจัดการโครงสร้างพื้นฐาน Azure ในขณะนี้เราเรียกใช้ Ansible "ด้วยตนเอง" นั่นคือเราเรียกใช้ playbooksสำหรับงานอัตโนมัติต่างๆ ไม่มีโครงสร้างพื้นฐาน CI อาจจะไม่ได้เกี่ยวข้อง azure_rm.pyแต่เราจัดการสินค้าคงคลังของเราใช้สคริปต์แบบไดนามิก เราได้รับการสนับสนุนให้มีความปลอดภัยมากที่สุดเช่น อย่าเก็บรหัสผ่านห้องนิรภัยใน~/.vault_passหรือในไฟล์ภายในเครื่อง อย่าเก็บความลับของ Azure ~/.azure/credentials อย่าเก็บสิ่งที่ปลอดภัย.bashrcไว้ ในสถานการณ์ดังกล่าวฉันมีปัญหาในการหากลยุทธ์ที่สอดคล้องกันเพื่อให้แน่ใจว่า playbooks ของฉันสามารถเข้าถึงความลับของ Azure ได้ในขณะที่ทำตามแนวทางข้างต้น คำถาม ฉันจะหลีกเลี่ยงการจัดเก็บข้อมูลประจำตัวของ Ansible Vault และ Azure บนไฟล์ได้อย่างไรในขณะที่ยังมั่นใจได้ว่า playbooks ของฉันสามารถเข้าถึงได้ สิ่งที่ฉันได้ลอง จนถึงตอนนี้ฉันได้สร้างสคริปต์ตัวคลุมขึ้นมา ขอให้ผู้ใช้รหัสผ่าน Vault ใช้เพื่อถอดรหัส Vaulted Shell script ประเมินสคริปต์ซึ่งโหลดตัวแปรสภาพแวดล้อม Azure ลงในสภาพแวดล้อม เรียกใช้ playbook บนสภาพแวดล้อมที่ตั้งค่าไว้ มีโซลูชัน "Ansible" …

2
อะไรคือรูปแบบของ Ansible ที่เทียบเท่ากับ `--vault-password-file`?
ตามความช่วยเหลือของ ansible-playbook เราสามารถใช้--user=REMOTE_USERเพื่อกำหนดผู้ใช้ ssh แต่สามารถกำหนดได้ansible_ssh_user: REMOTE_USERใน host- หรือ group_vars คำถาม สิ่งที่จำเป็นต้องมีตัวแปรที่จะกำหนดไว้ในกลุ่มการอย่างใดอย่างหนึ่งหรือ host_vars ไดเรกทอรีเพื่อป้องกันการที่--vault-password-fileจะต้องมีการกำหนดไว้ในขณะที่ทำงานansible-playbook? ความพยายามในการ เมื่อansible_vault_password_file: ~/.vault_pass.txtมีการกำหนดไว้ในการกำหนดค่าการถอดรหัสล้มเหลว: ERROR! Decryption failed on /path/to/vault ไม่พบตัวแปร vault ที่เชื่อมโยงในเอกสารนี้
12 ansible 

3
จะป้องกันการปรับใช้ Ansible เพื่อลดอุบัติเหตุได้อย่างไร
เมื่อเร็ว ๆ นี้ Amazon S3 มีไฟดับครั้งใหญ่ในภูมิภาคตะวันออกเฉียงใต้ ดูเหมือนว่ามีสาเหตุมาจากข้อผิดพลาดในการสะกดคำเมื่อเรียกใช้ Playbook การบำรุงรักษาใน Ansible หรือเครื่องมือที่คล้ายกัน คุณสามารถใส่ shell สคริปต์ wrapper รอบ ansible-playbook ให้มีลักษณะดังนี้: #!/bin/bash /usr/bin/ansible-playbook "$@" --list-hosts --list-tasks read -p "Are you sure? (y/n) " answer test "$answer" = "y" || exit 0 exec /usr/bin/ansible-playbook "$@" แต่มีวิธีอื่นอีกบ้างที่คุณใช้ในการปรับปรุงความปลอดภัยและลดโอกาสที่จะเกิดข้อผิดพลาดซึ่งเป็นสาเหตุสำคัญของ บริษัท ของคุณ
12 ansible  process 

1
วิธีการกำหนดและทำซ้ำกำหนดหมายเลขพอร์ตที่เพิ่มขึ้นใน Ansible ได้อย่างไร
ฉันยังใหม่กับ Ansible แต่ฉันต้องบำรุงรักษา playbooks ซึ่งสอดคล้องกับบริการที่จะติดตั้งในสภาพแวดล้อมที่กำหนด พวกเขาจำเป็นต้องได้รับมอบหมายพอร์ตใบรับรอง ฯลฯ ซึ่งส่งผลให้หลาย ๆ ไฟล์ที่มีรายการของชื่อเดียวกันและการกำหนดให้กับพวกเขา ในหลายกรณีฉันคิดว่าฉันสามารถนำ service_name กลับมาใช้ใหม่ได้อย่างง่ายดายเป็นตัวแปร แต่เมื่อทำการแมปกับ IP พอร์ตหรือตัวระบุตัวเลขอื่น ๆ ฉันยังไม่ได้คิดหาวิธีกำหนดหมายเลขที่แตกต่างกันในลักษณะที่สามารถทำซ้ำได้ เหมือนกันแม้ว่าจะมีการเพิ่มบริการใหม่ ฉันได้พิจารณาการใช้ฐานข้อมูล SQLite เพื่อจัดเก็บบริการจากและเพื่อสร้างค่าจากรหัสของพวกเขา แต่ฉันไม่มีความคิดว่าจะรวมเข้ากับ Ansible ได้อย่างไร ฉันสมมติว่าการกำหนดหมายเลขพอร์ตที่เพิ่มขึ้นไม่ใช่สิ่งใหม่ทั้งหมด มันเป็นสิ่งที่ sysadmins มากมายในแต่ละวันดังนั้นจะต้องมีวิธีที่จะทำอย่างนั้น แก้ไข : เราเพิ่มหมายเลขพอร์ตโดยตรงในgroup_vars/all.ymlลักษณะนี้: ports: service1:1024 service2:1025 service3:1026 สินค้าคงคลังจะถูกสร้างขึ้นโดยอัตโนมัติเนื่องจากเราสร้างคุกเพิ่มเติม (BSD) และขึ้นอยู่กับบทบาทที่จะดำเนินการ
12 ansible  ports 

3
มีวิธีเรียกใช้ with_items วนซ้ำใน Ansible หรือไม่
ฉันใช้ Ansible 2.2 แต่สามารถอัพเกรดได้ถ้ามันช่วยได้ ฉันเห็นสิ่งนี้และรู้สึกตื่นเต้นมาก แต่ดูเหมือนจะไม่ได้อยู่ในเอกสาร Ansible รุ่น (หรือใด ๆ ) ปัญหาที่ฉันพยายามแก้ไขคือฉันมีผู้ใช้ 1,000 คนที่ฉันต้องจัดการในกล่อง Centos ใช้เวลาสักครู่ในการเรียกใช้งานนี้ตามลำดับ และยิ่งน่ารำคาญยิ่งขึ้นทุกสิ่งปรากฏขึ้นเมื่อมีการเปลี่ยนแปลงเนื่องจากคำสั่ง "หมดอายุ" ในโมดูลผู้ใช้จะทำเครื่องหมายสิ่งที่เปลี่ยนแปลงเสมอ สิ่งนี้ดูมีแนวโน้มด้วยเช่นกัน แต่ใช้เวลาเท่ากันในการรันแต่ละคำสั่งในลูป with_items และไม่ได้ทำงานเร็วขึ้น (ฉันไม่เคยใส่ใจที่จะรอนานจนจบ) การข้ามงานเร็วมาก (เร็วกว่าใน Ansible 2.0) ถ้าฉันไม่สามารถหาวิธีที่จะทำให้การทำงานแบบขนานนี้ฉันคิดว่าฉันจะย้อนกลับไปและหาวิธีที่จะข้ามงานที่ไม่มีจุดหมายและถ้าทั้งหมด อื่นล้มเหลวฉันจะเขียนโมดูลของตัวเอง แต่ดูเหมือนว่าฉันควรจะทำสิ่งนี้ได้เร็วขึ้นใน Ansible นี่คือสิ่งที่ฉันต้องการเรียกใช้ในแบบขนาน host_authorizationsคือรายการชื่อผู้ใช้และข้อมูลอื่น ๆ - name: Create/modify OS user accounts user: name={{ item.username }} group=sshusers shell=/bin/bash home="/home/selinux-modules/{{ item.username }}" …
12 ansible 

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