ฉันจะใช้ ansible ด้วยรหัสผ่านสำหรับโฮสต์ได้อย่างปลอดภัยได้อย่างไร


108

ฉันต้องการใช้ansibleเพื่อจัดการกลุ่มของเซิร์ฟเวอร์ที่มีอยู่ ฉันสร้างansible_hostsไฟล์และทดสอบสำเร็จแล้ว (พร้อม-Kตัวเลือก) ด้วยคำสั่งที่กำหนดเป้าหมายไปยังโฮสต์เดียวเท่านั้น

ansible -i ansible_hosts host1 --sudo -K # + commands ...

ปัญหาของฉันตอนนี้คือรหัสผ่านผู้ใช้ในแต่ละโฮสต์นั้นแตกต่างกัน แต่ฉันไม่สามารถหาวิธีจัดการกับสิ่งนี้ได้ใน Ansible

ใช้-Kฉันได้รับพร้อมท์สำหรับรหัสผ่าน sudo เดียวล่วงหน้าซึ่งดูเหมือนว่าจะพยายามสำหรับโฮสต์ที่ตามมาทั้งหมดโดยไม่ต้องแจ้ง:

host1 | ...
host2 | FAILED => Incorrect sudo password
host3 | FAILED => Incorrect sudo password
host4 | FAILED => Incorrect sudo password
host5 | FAILED => Incorrect sudo password

การวิจัยเพื่อให้ห่างไกล:

  • คำถาม StackOverflowกับคำตอบหนึ่งที่ไม่ถูกต้อง ( "ใช้-K") และเป็นหนึ่งในการตอบสนองโดยผู้เขียนบอกว่า 'พบผมจำเป็นต้อง sudo passwordless'

  • Ansible docsซึ่งพูดว่า "การใช้ sudoless passwordless ทำให้สิ่งต่าง ๆ ง่ายขึ้นโดยอัตโนมัติ แต่ไม่จำเป็นต้องใช้ " (เน้นที่เหมือง)

  • การรักษาความปลอดภัยนี้คำถาม StackExchangeซึ่งนำไปเป็นอ่านที่NOPASSWDจำเป็น

  • บทความ"การจัดสรรที่ปรับขนาดได้และเข้าใจได้ ... "ซึ่งพูดว่า:

    "การเรียกใช้ sudo อาจต้องพิมพ์รหัสผ่านซึ่งเป็นวิธีที่แน่นอนในการบล็อก Ansible ตลอดไปการแก้ไขอย่างง่ายคือการเรียกใช้ visudo บนโฮสต์เป้าหมายและตรวจสอบให้แน่ใจว่าผู้ใช้ Ansible ใช้ในการเข้าสู่ระบบโดยไม่ต้องพิมพ์รหัสผ่าน"

  • บทความ"Playbooks Ansible พื้นฐาน"ซึ่งบอกว่า

    "Ansible สามารถเข้าสู่เซิร์ฟเวอร์เป้าหมายเป็นรูทและหลีกเลี่ยงความต้องการ sudo หรือให้ผู้ใช้ ansible มี sudo โดยไม่ใช้รหัสผ่าน แต่ความคิดในการทำอย่างใดอย่างหนึ่งทำให้ม้ามขู่ว่าจะกระโดดขึ้น gullet ของฉันและบล็อก windpipe ของฉัน ทำไม่ได้"

    ความคิดของฉันถูกต้อง แต่วิธีการขยายเกินเซิร์ฟเวอร์เดียว?

  • ปัญหา # 1227 ansible "Ansible ควรถามรหัสผ่าน sudo สำหรับผู้ใช้ทั้งหมดใน playbook" ซึ่งถูกปิดเมื่อปีที่แล้วโดย mpdehaan พร้อมความคิดเห็น "ยังไม่เห็นความต้องการมากสำหรับเรื่องนี้ฉันคิดว่าคนส่วนใหญ่กำลัง sudoing จากเพียงคนเดียว บัญชีผู้ใช้หรือการใช้กุญแจเป็นส่วนใหญ่ "

ดังนั้น ... ผู้คนใช้ Ansible ในสถานการณ์เช่นนี้ได้อย่างไร การตั้งค่าNOPASSWDใน/etc/sudoersการนำรหัสผ่านข้ามโฮสต์หรือทำให้เข้าสู่ระบบราก SSH ทั้งหมดดูเหมือนค่อนข้างลดลงอย่างมากในการรักษาความปลอดภัย


2
มีเหตุผลที่คุณไม่ได้ใช้กุญแจ SSH หรือไม่?
Trondh

22
ฉันใช้กุญแจ SSH แล้ว พวกเขาจะไม่ส่งผลกระทบsudo(ซึ่งยังควรต้องใช้รหัสผ่าน)
supervacuo

1
นี่อาจไม่ใช่สิ่งที่คุณกำลังมองหา แต่ในกล่อง Ubuntu ฉันยังคงใช้คีย์เช่นใส่กุญแจสาธารณะของฉันใน / root / authorized_keys เพื่อเข้าไปยังรูทโดยตรง ข้อเสียเปรียบที่ชัดเจนคือการอนุญาตให้ล็อกอินรูทผ่าน ssh ... ฉันไม่อนุญาตให้ล็อกอินด้วยรหัสผ่าน ssh และรัน fail2ban เพื่อเพิ่มความปลอดภัย
senorsmile

27
@senorsmile ขอบคุณสำหรับการตอบสนอง! คุณคิดจะทำให้มันเป็นคำตอบแทนเพื่อที่ฉันจะได้ลงคะแนนให้คุณโดยไม่อ่านคำถาม?
supervacuo

4
เช่นการansible_ssh_passwordตั้งค่าจะใช้กับรหัสผ่าน SSH เท่านั้น (เบาะแสอยู่ในชื่อ ... ) ฉันใช้การเข้าสู่ระบบด้วย SSH แบบใช้คีย์
supervacuo

คำตอบ:


53

คุณทำวิจัยของคุณแล้ว ...

จากประสบการณ์ทั้งหมดของฉันด้วยการสำรวจสิ่งที่คุณต้องการให้สำเร็จไม่ได้รับการสนับสนุน ดังที่คุณได้กล่าวมาแล้วว่ามันไม่จำเป็นต้องใช้ sudo แบบไม่มีรหัสผ่านและคุณถูกต้องมันไม่ได้ แต่ฉันยังไม่เห็นวิธีการใช้รหัสผ่าน sudo หลายอันภายใน ansible โดยไม่ต้องเรียกใช้การกำหนดค่าหลายอย่างแน่นอน

ดังนั้นฉันไม่สามารถให้ทางออกที่แน่นอนที่คุณกำลังมองหา แต่คุณถาม ...

"ดังนั้น ... ผู้คนที่ใช้ Ansible ในสถานการณ์เช่นนี้เป็นอย่างไรการตั้งค่า NOPASSWD ใน / etc / sudoers การใช้รหัสผ่านใหม่ทั่วทั้งโฮสต์

ฉันให้มุมมองเดียวกับคุณ กรณีการใช้งานของฉันคือโหนด 1k ในศูนย์ข้อมูลหลายแห่งที่สนับสนุน บริษัท SaaS ระดับโลกซึ่งฉันต้องออกแบบ / ใช้การควบคุมความปลอดภัยที่เข้มงวดอย่างบ้าคลั่งเนื่องจากลักษณะของธุรกิจของเรา การรักษาความปลอดภัยอยู่เสมอสมดุลการกระทำการใช้งานความปลอดภัยน้อยกว่ากระบวนการนี้จะไม่แตกต่างกันถ้าคุณใช้เซิร์ฟเวอร์ 10 หรือ 1,000 หรือ 100,000

คุณถูกต้องอย่างแน่นอนที่จะไม่ใช้การเข้าสู่ระบบรูทผ่านรหัสผ่านหรือคีย์ ssh อันที่จริงแล้วการล็อกอินรูทควรปิดการใช้งานโดยสิ้นเชิงหากเซิร์ฟเวอร์มีสายเคเบิลเครือข่ายเสียบอยู่

ให้พูดคุยเกี่ยวกับการใช้รหัสผ่านซ้ำในองค์กรขนาดใหญ่มีเหตุผลหรือไม่ที่จะขอให้ sysadmins มีรหัสผ่านที่แตกต่างกันในแต่ละโหนด สำหรับโหนดคู่อาจ แต่ผู้ดูแลระบบ / วิศวกรของฉันจะทำการกบฏหากพวกเขาต้องมีรหัสผ่านที่แตกต่างกันใน 1,000 โหนด การใช้งานที่ใกล้จะเป็นไปไม่ได้เช่นกันผู้ใช้แต่ละคนจะต้องเก็บรหัสผ่านของตัวเองไว้ที่อื่นหวังว่าจะเป็นรหัสผ่านไม่ใช่สเปรดชีต และทุกครั้งที่คุณใส่รหัสผ่านในสถานที่ที่สามารถดึงออกมาเป็นข้อความล้วนคุณจะลดความปลอดภัยลงอย่างมาก ฉันต้องการให้พวกเขารู้ว่ารหัสผ่านที่คาดเดายากจริงๆหนึ่งหรือสองรหัสผ่านจะต้องปรึกษาไฟล์ keypass ทุกครั้งที่พวกเขาจำเป็นต้องลงชื่อเข้าใช้หรือเรียกใช้ sudo บนเครื่อง

ดังนั้นการใช้รหัสผ่านซ้ำและมาตรฐานจึงเป็นสิ่งที่ยอมรับได้อย่างสมบูรณ์และเป็นมาตรฐานแม้ในสภาพแวดล้อมที่ปลอดภัย ไม่เช่นนั้น ldap, keystone และบริการไดเรกทอรีอื่น ๆ

เมื่อเราย้ายไปยังผู้ใช้อัตโนมัติคีย์ ssh ทำงานได้ดีในการให้คุณเข้าใช้ แต่คุณยังต้องผ่าน sudo ตัวเลือกของคุณเป็นรหัสผ่านมาตรฐานสำหรับผู้ใช้อัตโนมัติ (ซึ่งเป็นที่ยอมรับในหลาย ๆ กรณี) หรือเพื่อเปิดใช้งาน NOPASSWD ตามที่คุณได้ระบุไว้ ผู้ใช้อัตโนมัติส่วนใหญ่รันคำสั่งเพียงไม่กี่คำดังนั้นจึงเป็นไปได้และเป็นที่พึงปรารถนาที่จะเปิดใช้งาน NOPASSWD แต่สำหรับคำสั่งที่ได้รับอนุมัติล่วงหน้าเท่านั้น ฉันขอแนะนำให้ใช้การจัดการการกำหนดค่าของคุณ (อธิบายในกรณีนี้) เพื่อจัดการไฟล์ sudoers ของคุณเพื่อให้คุณสามารถอัปเดตรายการคำสั่งแบบไม่ใช้รหัสผ่านได้อย่างง่ายดาย

ขณะนี้มีขั้นตอนบางอย่างที่คุณสามารถทำได้เมื่อคุณเริ่มปรับสัดส่วนเพื่อแยกความเสี่ยงเพิ่มเติม ในขณะที่เรามี 1,000 หรือมากกว่านั้นโหนดไม่ใช่ทั้งหมดเป็นเซิร์ฟเวอร์ 'การผลิต' บางคนเป็นสภาพแวดล้อมการทดสอบและอื่น ๆ ผู้ดูแลระบบบางคนไม่สามารถเข้าถึงเซิร์ฟเวอร์การผลิตเหล่านั้นกว่าที่จะสามารถใช้ SSO . แต่ผู้ใช้อัตโนมัติมีความปลอดภัยเพิ่มขึ้นเล็กน้อยเช่นเครื่องมืออัตโนมัติที่ผู้ดูแลระบบที่ไม่ได้ใช้งานสามารถเข้าถึงได้มีผู้ใช้และข้อมูลรับรองที่ไม่สามารถใช้ในการผลิตได้ หากคุณต้องการเปิดใช้งานการค้นหาบนโหนดทั้งหมดคุณจะต้องดำเนินการเป็นสองแบทช์หนึ่งครั้งสำหรับการไม่ใช้งานและการผลิตครั้งเดียว

นอกจากนี้เรายังใช้หุ่นเชิดเนื่องจากเป็นเครื่องมือจัดการการกำหนดค่าบังคับดังนั้นการเปลี่ยนแปลงส่วนใหญ่ในสภาพแวดล้อมทั้งหมดจะถูกผลักออกไป

เห็นได้ชัดว่าถ้าคุณสมบัติที่คุณอ้างได้รับการเปิดใหม่ / เสร็จสมบูรณ์สิ่งที่คุณต้องการจะได้รับการสนับสนุนทั้งหมด แม้ว่าการรักษาความปลอดภัยจะเป็นกระบวนการประเมินความเสี่ยงและการประนีประนอม หากคุณมีเพียงไม่กี่โหนดที่คุณสามารถจำรหัสผ่านได้โดยไม่ต้องหันไปจดบันทึกที่โพสต์อิทรหัสผ่านที่แยกต่างหากจะปลอดภัยกว่าเล็กน้อย แต่สำหรับพวกเราส่วนใหญ่มันไม่ใช่ตัวเลือกที่เป็นไปได้


ขอบคุณ @Zeb - ฉันคิดว่าผู้ใช้ที่มีเซิร์ฟเวอร์นับหมื่นต่อพันจะใช้NOPASSWDเหตุผลด้านความสุขอยู่ดี (อาจสนับสนุนกฎไฟร์วอลล์ที่เข้มงวดมากขึ้นเป็นต้น ) แต่ก็เป็นการดีที่จะอ่านกรณีการใช้งานและความคิดเกี่ยวกับภัยคุกคาม แบบ
supervacuo

16
อย่างไรก็ตามหนึ่งความคิดเห็นเกี่ยวกับข้อเสนอแนะของคุณเกี่ยวกับการ จำกัดsudoคำสั่ง"อนุมัติล่วงหน้า" (ซึ่งเกิดขึ้นกับฉันเมื่อฉันค้นพบว่าNOPASSWDจำเป็นมาก) น่าเสียดายที่สิ่งนี้ดูเหมือนจะไม่ได้รับการสนับสนุนอย่างสมบูรณ์เช่นกัน - ไม่มีคำสัญญาใด ๆ เกี่ยวกับการโทรเช่น chownหรือmkdirไบนารีโดยตรงและจำเป็นต้องสามารถให้sudo /bin/shโมดูลส่วนใหญ่ทำงานได้
supervacuo

ฉันดูเหมือนจะจำได้ว่าหนึ่งในวิศวกรของฉันบ่นเกี่ยวกับที่ในขณะที่กลับมาที่น่ารำคาญ
Zeb

36

จาก Ansible 1.5 on เป็นไปได้ที่จะใช้vault ที่เข้ารหัสสำหรับ host_vars และตัวแปรอื่น ๆ อย่างน้อยที่สุดคุณจะสามารถเก็บansible_sudo_passตัวแปรต่อโฮสต์ (หรือต่อกลุ่ม) ได้อย่างปลอดภัย น่าเสียดายที่--ask-vault-passจะขอรหัสผ่านห้องนิรภัยเพียงครั้งเดียวต่อการเรียกใช้ที่ไม่สามารถจดจำได้ดังนั้นคุณจึงยังคงถูก จำกัด ให้ใช้รหัสผ่านห้องนิรภัยเดียวสำหรับโฮสต์ทั้งหมดที่คุณจะใช้ด้วยกัน

อย่างไรก็ตามสำหรับการใช้งานบางอย่างนี่อาจเป็นการปรับปรุงมากกว่าการมีรหัสผ่าน sudo เดียวในหลาย ๆ โฮสต์เนื่องจากผู้โจมตีที่ไม่สามารถเข้าถึง host_vars ที่เข้ารหัสของคุณจะยังคงต้องการรหัสผ่าน sudo แยกต่างหากสำหรับทุกเครื่อง (หรือกลุ่มเครื่อง) ที่เขาหรือเธอโจมตี


3
ansible_sudo_passตัวเลือกดูเหมือนใหม่อีกด้วย - และดูเหมือนว่าจะทำสิ่งที่ผมขอ รหัสผ่านห้องนิรภัยเดียวเหมาะสำหรับวัตถุประสงค์ของฉันเช่นกัน ขอบคุณ!
supervacuo

มีวิธีหลีกเลี่ยงการเข้ารหัสทั้งหมด host_varsโดยใช้วิธีนี้หรือไม่? (ข้อ จำกัด ที่อาจเกิดขึ้นโดย Alex Dupuy)
supervacuo

1
@supervacuo - เพื่อหลีกเลี่ยงการเข้ารหัส vars โฮสต์ทั้งหมดให้ใช้ไดเรกทอรี var โฮสต์ที่ประกอบด้วย main.yml (ไม่ได้เข้ารหัส) และ secret.yml (เข้ารหัส) - ดูส่วนสุดท้ายของส่วนเอกสารนี้ซึ่งพูดถึงกลุ่ม "raleigh" - เทคนิคเดียวกัน ใช้ได้กับ vars โฮสต์และ vars กลุ่ม ฉันใช้สิ่งนี้มากรูปแบบเดียวคือถ้าจำเป็นต้องใช้ความลับเฉพาะสำหรับ playbooks บางเล่มมันจะมีประโยชน์ในการจัดเก็บไว้ในต้นไม้ที่แตกต่างกันโดยสิ้นเชิงและรวมผ่านเส้นทางที่มีชื่อโฮสต์หรือ var
RichVel

1
หากฉันเข้ารหัสค่า 'ansible_ssh_pass' ในห้องนิรภัยดังนั้นฉันต้องทำซ้ำค่า 'ansible_sudo_pass' ด้วยหรือไม่ มีวิธีสำหรับค่า sudo_pass ที่สองเพื่ออ้างอิงค่า 'ssh_pass' ตัวแรกหรือไม่
emeraldjava

ความครอบคลุมที่ดีเกี่ยวกับการใช้รหัสผ่านที่ถูกต้องสามารถพบได้ที่นี่: stackoverflow.com/a/37300030/5025060
CODE-REaD

22

ด้วย Ansible 1.5 คุณสามารถตั้งค่าตัวแปรansible_sudo_passโดยใช้lookup('password', …):

ansible_sudo_pass: "{{ lookup('password', 'passwords/' + inventory_hostname) }}"

ฉันพบว่ามันสะดวกกว่าการใช้ไฟล์host_vars/ด้วยเหตุผลหลายประการ:

  • ฉันใช้with_password: "passwords/{{ inventory_hostname}} encrypt=sha256_crypt" เพื่อจัดเตรียมรหัสผ่านสำหรับผู้ใช้ระยะไกลที่ปรับใช้ (ซึ่งจำเป็นสำหรับsudo ) ดังนั้นพวกเขาจึงมีอยู่แล้วในไฟล์ (แม้ว่าการค้นหาข้อความธรรมดาเหล่านี้จะสูญเสียค่าเกลือที่เก็บไว้ในไฟล์เมื่อสร้างค่าแฮช) .

  • สิ่งนี้จะเก็บรหัสผ่านในไฟล์ไว้เท่านั้น (ไม่มีansible_sudo_pass:ข้อความธรรมดา) สำหรับการเพิ่มของ epsilon ในการรักษาความปลอดภัยการเข้ารหัส ที่สำคัญกว่านั้นหมายความว่าคุณไม่ได้เข้ารหัสตัวแปรเฉพาะโฮสต์อื่น ๆ ทั้งหมดเพื่อให้สามารถอ่านได้โดยไม่ต้องใช้รหัสผ่านห้องนิรภัย

  • การใส่รหัสผ่านในไดเรกทอรีที่แยกต่างหากช่วยให้การป้องกันไม่ให้ไฟล์ออกจากการควบคุมแหล่งที่มาได้ง่ายขึ้นหรือใช้เครื่องมือเช่นgit-cryptเพื่อเก็บไว้ในรูปแบบที่เข้ารหัสไว้ (คุณสามารถใช้สิ่งนี้กับ Ansible ก่อนหน้านี้ ฉันใช้ git-crypt และเนื่องจากฉันดูเฉพาะที่เก็บในรูปแบบถอดรหัสบนระบบไฟล์ที่เข้ารหัสฉันไม่รำคาญกับห้องนิรภัยและดังนั้นจึงไม่จำเป็นต้องพิมพ์รหัสผ่านห้องนิรภัย (แน่นอนว่าการใช้ทั้งสองอย่างนั้นจะปลอดภัยกว่า)

นอกจากนี้คุณยังสามารถใช้การค้นหาแบบฟังก์ชั่นที่มีansible_ssh_pass ; นี้อาจจะเป็นไปได้กับรุ่นก่อนหน้านี้เบิ้ลที่ไม่ได้มีansible_sudo_pass


2
ในที่สุดฉันก็ลองทำสิ่งนี้ (ขอบคุณ!) แต่ไม่เห็นว่ามันจะทำงานได้git-cryptอย่างไร เท่าที่ฉันเห็น ดูเหมือนว่า Ansible ยังไม่รองรับการใช้งานlookupบนห้องนิรภัยที่ถูกเข้ารหัส passwordเอกสารโมดูลบอกว่ามีการสนับสนุนบางที่ยังไม่มีเอกสารสำหรับการจัดเก็บการเข้ารหัส แต่ฉันยังไม่พบรายละเอียด เบาะแสใด ๆ
supervacuo

19

การใช้passเป็นวิธีง่าย ๆ ในการให้รหัสผ่าน sudo ผ่านเก็บหนึ่งรหัสผ่านต่อไฟล์ซึ่งทำให้ง่ายต่อการแบ่งปันรหัสผ่านทาง git หรือวิธีอื่น ๆ นอกจากนี้ยังมีความปลอดภัย (โดยใช้ GnuPG) และหากคุณใช้ gpg-agent มันจะช่วยให้คุณใช้งานได้โดยไม่ต้องป้อนรหัสผ่านในการใช้งานแต่ละครั้ง

หากต้องการให้รหัสผ่านที่เก็บไว้เป็นservers/fooเซิร์ฟเวอร์ให้ใช้รหัสผ่านfooในไฟล์สินค้าคงคลังดังนี้:

[servers]
foo ansible_sudo=True \
    ansible_sudo_pass="{{ lookup('pipe', 'pass servers/foo') }}"

เนื่องจากคุณได้ปลดล็อคกุญแจสำหรับ gpg-agent ก่อนหน้านี้สิ่งนี้จะทำงานได้โดยไม่จำเป็นต้องป้อนรหัสผ่านใด ๆ


3

นี่เป็นเรื่องที่ค่อนข้างเก่าอย่างไรก็ตาม:

  • เราใช้ระบบการตรวจสอบความถูกต้องสองแบบภายใน บริษัท การจัดการเครื่องจักรทำได้จากเวิร์กสเตชันท้องถิ่นในทีมของฉัน
  • ฉันเขียนvars_pluginสำหรับ Ansible (การใช้งานค่อนข้างสมบูรณ์อาจพบได้ที่https://gist.github.com/mfriedenhagen/e488235d732b7becda81 ) ซึ่งแตกต่างจากระบบการตรวจสอบความถูกต้องหลายประการ:
  • ชื่อของระบบการรับรองความถูกต้องเป็นกลุ่มเฉพาะ
  • ผู้ใช้ที่ใช้เข้าสู่ระบบ / sudo เป็นกลุ่มและผู้ดูแลระบบที่เฉพาะเจาะจง
  • ดังนั้นฉันจึงดึงผู้ใช้ออกจากสภาพแวดล้อมของผู้ดูแลระบบและรหัสผ่านที่สอดคล้องกันผ่านไลบรารี python-keyring จากรหัสผ่านที่ปลอดภัย (เราใช้พวงกุญแจของ Mac OS X แต่จากเอกสาร kwallet Gnome และ _win_crypto ก็รองรับเช่นกัน)
  • ฉันตั้งค่าการอนุญาตให้ใช้รหัสผ่านในพวงกุญแจของ Mac OS X เพื่อแจ้งให้ฉันทราบเกี่ยวกับความจริงที่ว่าโปรแกรมความปลอดภัยบรรทัดคำสั่งร้องขอการเข้าถึงรหัสผ่านสำหรับทุกระบบการตรวจสอบสิทธิ์ที่โฮสต์ใช้ดังนั้นฉันจึงเรียกใช้ "ansible -s all -m ping" และรับพรอมต์สองอัน (อันละอันสำหรับแต่ละระบบการพิสูจน์ตัวตน) ที่ฉันกด space bar และ ansible จะเลือกรหัสผ่าน

มันดูเรียบร้อยดีขอบคุณ - ฉันชอบความคิดที่ไม่ต้องเก็บรหัสผ่านไว้ในสองแห่ง ในขณะนี้ฉันติดอยู่กับ KeepassX (เพราะพวงกุญแจ GNOME นั้นดูไม่สะดวกในการพกพา) แต่บางทีฉันสามารถpython-keepassทำงานได้?
supervacuo

เท่าที่ฉันเข้าใจ python-keyring เป็นสิ่งที่เป็นนามธรรมสำหรับเรื่องนี้ดังนั้นเพื่อนร่วมงานของคุณอาจใช้ระบบปฏิบัติการอื่น หรือคุณจัดเก็บ keepassx db ไว้ใน USB stick และต้องจัดการจากเวิร์กสเตชันที่มีระบบปฏิบัติการต่าง ๆ
Mirko Friedenhagen

เข้าใจ; ฉันหมายความว่าฉันต้องใช้ KeepassX เพื่อให้สามารถเข้าถึงรหัสผ่านในระบบที่ไม่ใช่ของ GNOME ได้ดังนั้นการเก็บไว้ในgnome-keyringนั้นจะหมายถึงการเก็บบันทึกที่ซ้ำกัน ยังใช้งานได้ดีกว่าการใช้NOPASSWDถึงแม้ว่า…
supervacuo

0

วิธีหนึ่งที่เป็นไปได้ในการทำเช่นนี้คือการใช้ตัวแปรสิ่งแวดล้อม

เช่น

pass1=foo pass2=bar ansible-playbook -i production servers.xml

จากนั้นในละครคุณสามารถค้นหารหัสผ่าน sudo โดยใช้:

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