Деактивировать текущего Ansible пользователя с помощью Ansible - PullRequest
0 голосов
/ 07 мая 2020

При настройке нового Raspberry Pi с Ansible я хотел бы выполнить следующие действия:

  • Используя пользователя по умолчанию pi, создайте нового пользователя с именем my_new_admin
  • Используя нового пользователя my_new_admin, деактивируйте пользователя по умолчанию pi
  • Продолжите выполнение playbook как my_new_admin

Мне трудно достичь этого в одной пьесе. Возможно ли вообще переключить активного пользователя вот так в Ansible?

# inventory.yaml
---
all:
  children:
    rpis:
      hosts:
        myraspberrypi.example.com:
          ansible_user: my_new_admin  # or should `pi` go here?
...
# initialize.yaml
- hosts: rpis
  remote_user: 'pi'
  become: true
  tasks:
    - name: 'create new user'
      user:
        name: 'my_new_admin'
        append: true
        groups:
          - 'sudo'
    - name: 'add SSH key to my_new_admin'
      *snip*
    - name: 'lock default user'
      remote_user: 'my_new_admin'
      user:
        name: 'pi'
        expires: '{{ ("1970-01-02 00:00:00" | to_datetime).timestamp() | float }}'
        password_lock: true
...

1 Ответ

1 голос
/ 07 мая 2020

Если вы хотите сменить пользователя, самое простое решение - начать новую игру. Например, следующий сценарий будет запускать первое воспроизведение от имени пользователя 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_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_user, а не использую remote_user, потому что похоже, что ansible_user имеет приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...