📜  Ansible playbook 设置无密码 sudo - Python (1)

📅  最后修改于: 2023-12-03 15:29:24.571000             🧑  作者: Mango

Ansible playbook 设置无密码 sudo - Python

当我们使用 Ansible 进行自动化配置时,通常会涉及到需要使用 sudo 命令执行某些命令的情况。在大多数情况下,我们需要在使用 sudo 命令时输入密码。但是,有些情况下,我们希望能够在不需要输入密码的情况下使用 sudo 命令。下面介绍如何使用 Ansible playbook 设置无密码 sudo。

1. 设置 sudoers 文件

我们可以通过修改 /etc/sudoers 文件来实现无密码 sudo,但是要特别注意,修改该文件时需要非常小心。为了避免出现意外,我们可以使用 Ansible playbook 来配置该文件。

- name: 修改 sudoers 文件
  become: true
  lineinfile:
    dest: /etc/sudoers
    line: 'ansible ALL=(ALL) NOPASSWD: ALL'
    state: present

以上的代码块将会向 /etc/sudoers 文件中添加一行内容:

ansible ALL=(ALL) NOPASSWD: ALL

其中,ansible 是一个具有 sudo 权限的用户。

2. 指定 become 用户

使用无密码 sudo 后,我们需要指定一个用户来执行 sudo 命令。在 Ansible playbook 中,我们可以使用 become 用户指令来指定执行命令的用户。

- name: 复制文件到目标主机
  copy:
    src: /path/to/source/file
    dest: /path/to/destination/file
  become: true
  become_user: ansible

以上的代码块将会在复制文件时使用无密码 sudo,执行命令的用户是 ansible。

3. 指定 become 机制

在 Ansible playbook 中,我们可以使用 become_method 指令来指定使用哪种方式执行 become 操作。

- name: 复制文件到目标主机
  copy:
    src: /path/to/source/file
    dest: /path/to/destination/file
  become: true
  become_method: sudo

以上的代码块将会在复制文件时使用无密码 sudo 进行 become 操作。

以上就是使用 Ansible playbook 设置无密码 sudo 的方法,我们可以通过修改 sudoers 文件、指定 become 用户以及指定 become 机制来实现该功能。