簡體   English   中英

Ansible:無需密碼的 sudo

[英]Ansible: sudo without password

我想在沒有 sudo 密碼的情況下使用用戶 sa1 運行 ansible:

第一次正常:

[root@centos1 cp]# ansible cent2 -m shell -a "sudo yum -y install httpd"

cent2 | SUCCESS | rc=0 >>

第二次失敗:

[root@centos1 cp]# ansible cent2 -s -m yum -a "name=httpd state=absent"

cent2 | FAILED! => {
    "changed": false,
    "failed": true,
    "module_stderr": "",
    "module_stdout": "sudo: a password is required\r\n",
    "msg": "MODULE FAILURE",
    "parsed": false
}

請幫忙!

這是不可靠的,這是您服務器的配置。 確保 sudo 允許 ansible 在沒有密碼的情況下使用。

  1. 要登錄到服務器
  2. 使用sudo visudo打開 sudoers 文件
  3. 確保你有這樣一行: centos ALL=(ALL) NOPASSWD:ALL
  4. 用您的用戶替換centos
  5. 保存文件

您可以通過運行從服務器本身嘗試:

sudo -u [yourusername] sudo echo "success"

如果這有效,它也應該從 ansible 工作。

默認情況下,ansible 使用以下標志運行 sudo: -H -S -n以成為 root。 其中--non-interactive將是選項-n的相應長格式。 此選項似乎使 sudo 返回錯誤消息,而不嘗試讓身份驗證模塊執行其操作。

我設法通過創建一個 ~/.ansible.cfg 包含以下行來解決密碼錯誤,用於最相關的 ansible 版本。

穩定的 2.4

[defaults]
sudo_flags = --set-home --stdin

安全的 2.9

[sudo_become_plugin]
flags = -H -S

這至少足以讓 pam_ssh_agent_auth.so 運行並驗證我的身份。

在 2.8 版之前,上面的例子可以工作,比 2.8 新的需要第二個例子。 新樣式配置的文檔可以在Ansible 用戶指南 中找到

這是劇本,以防您想要 ansible 為您制作

  1. 將用戶添加到所選組(在我的情況下是wheel
  2. 將此添加到您的劇本中
- name: Make users passwordless for sudo in group wheel
  lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%wheel'
    line: '%wheel ALL=(ALL) NOPASSWD: ALL'
    validate: 'visudo -cf %s'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM