使用Ansible停用当前Ansible用户

使用Ansible停用当前Ansible用户,ansible,Ansible,在使用Ansible设置新的Raspberry Pi时,我要执行以下操作: 使用默认的piuser,创建一个名为my\u new\u admin 使用新的my\u new\u admin用户,停用默认的pi用户 继续以my\u new\u admin 我发现单凭一本剧本很难做到这一点。甚至可以在Ansible中这样切换活动用户吗 #inventory.yaml --- 全部: 儿童: rpis: 主持人: myraspberrypi.example.com: 回答用户:我的新管理员还是“pi

在使用Ansible设置新的Raspberry Pi时,我要执行以下操作:

  • 使用默认的
    pi
    user,创建一个名为
    my\u new\u admin
  • 使用新的
    my\u new\u admin
    用户,停用默认的
    pi
    用户
  • 继续以
    my\u new\u admin
我发现单凭一本剧本很难做到这一点。甚至可以在Ansible中这样切换活动用户吗

#inventory.yaml
---
全部:
儿童:
rpis:
主持人:
myraspberrypi.example.com:
回答用户:我的新管理员还是“pi”应该在这里?
...
#initialize.yaml
-主持人:rpis
远程用户:'pi'
变成:真的
任务:
-名称:“创建新用户”
用户:
姓名:“我的新管理员”
附加:true
组:
-“sudo”
-名称:“将SSH密钥添加到我的新管理员”
*剪断*
-名称:“锁定默认用户”
远程用户:“我的新管理员”
用户:
名称:'pi'
过期:{(“1970-01-02 00:00:00”| to_datetime).timestamp()| float}
密码锁定:true
...

如果您想切换用户,最简单的解决方案是重新开始播放。例如,以下剧本将以用户
pi
的身份运行第一个剧本,以用户
root
的身份运行第二个剧本:

- hosts: pi
  gather_facts: false
  remote_user: pi
  tasks:
    - command: whoami
      register: whoami

    - debug:
        msg: "{{ whoami.stdout }}"

- hosts: pi
  gather_facts: false
  remote_user: root
  tasks:
    - command: whoami
      register: whoami

    - debug:
        msg: "{{ whoami.stdout }}"
在这本剧本中,我对两个剧本中的
remote\u user
都有明确的说明,但您也可以在库存中设置一个用户,并仅在必要时覆盖它。例如,如果我有:

pi ansible_host=raspberrypi.local ansible_user=root
然后我可以像这样重写上面的剧本:

- hosts: pi
  gather_facts: false
  vars:
    ansible_user: pi
  tasks:
    - command: whoami
      register: whoami

    - debug:
        msg: "{{ whoami.stdout }}"

- hosts: pi
  gather_facts: false
  tasks:
    - command: whoami
      register: whoami

    - debug:
        msg: "{{ whoami.stdout }}"

请注意,我在这里设置的是
ansible\u user
变量,而不是使用
remote\u user
,因为看起来
ansible\u user
具有优先权。

当然!我不知道每个剧本可以有多个剧本。既然你这么说了,就很清楚了。非常感谢。