วิธีการตั้งค่าผู้ใช้ ssh เริ่มต้นสำหรับโฮสต์ทั้งหมดใน Ansible?


11

รุ่น Ansible 2.1

ฉันมีไฟล์สินค้าคงคลัง hosts

[nodes]
host1
host2
...

และ playbook ที่เรียบง่าย site.yml

---
- hosts: all
  tasks:
    - include: tasks/main.yml

ถ้าฉันเพิ่งเริ่มเล่น

ansible-playbook -i hosts site.yml -vvvv

ฉันได้รับข้อผิดพลาดนี้สำหรับโฮสต์ทั้งหมด

ESTABLISH SSH CONNECTION FOR USER: None
fatal: [host1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
...

อย่างไรก็ตามการอ่านเอกสารAnsible Inventoryฉันเพิ่มลงansible_userในhostsไฟล์

[nodes]
host1    ansible_user=root
host2    ansible_user=root
...

วิธีนี้จะช่วยแก้ไขSSH CONNECTION UNREACHABLEข้อผิดพลาด อย่างไรก็ตามฉันต้องเพิ่มansible_user=rootถัดจากโฮสต์ทั้งหมดหรือไม่ หรือมีวิธีที่ง่ายกว่าในการทำเช่นนี้?

คำตอบ:


11

ตรวจสอบตัวอย่าง / ansible.cfgไฟล์เริ่มต้นแล้วคุณจะพบสิ่งนี้ภายใต้[defaults]:

# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
#remote_user = root

uncomment remote_userและการตั้งค่าผู้ใช้กับสิ่งที่คุณต้องการที่จะเข้าสู่ระบบเป็น

Ansible ได้รับansible.cfgที่ไหน ไฟล์เดียวกันอธิบาย:

# nearly all parameters can be overridden in ansible-playbook 
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first

ขอบคุณ @Deltik คุณจะสามารถตอบคำถามนี้ได้หรือไม่?
Howard Lee

@HowardLee: คำถามอื่น ๆของคุณนั้นเกี่ยวกับความเห็นเป็นหลักและไม่เหมาะสำหรับ Super User
Deltik

4

อีกวิธีหนึ่งคือการใช้--userเพื่อกำหนดผู้ใช้ ssh ระยะไกล พิมพ์ansible-playbook --helpเพื่ออ่านเพิ่มเติม นี่คือคำสั่งทั่วไปของฉัน:

ansible-playbook -i hosts site.yml --user <user> --ask-pass -vvvv

--ask-pass จะแจ้งให้ใส่รหัสผ่านสำหรับ --user


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