Назад | Перейти на главную страницу

author_keys и with_items в Ansible

Я пытаюсь создать новых пользователей и заполнить их файл ~ / .ssh / authorized_keys с помощью Ansible. Вот моя задача:

- name: Create user account
  user: name="{{ item.username }}-ns" comment="{{ item.realname }}"
    groups=adm,sudo, append=yes
    password="{{ item.password }}"
  with_items: "{{ ssh_users }}"
- name: copy ssh keys to authorized_keys
  authorized_key:  user="{{ item.username }}-ns"
    key="{{ sshkey_path }}/{{ item.username }}.pub"
  with_item: "{{ ssh_users }}"

и мой файл переменных выглядит так:

ssh_users:
  - username: "jdoe"
    realname: "jrow"
    password: "$6$FWhXrnkizCqwKJcM$y55ETlvthHA49NuzwYgKAmOTnsBDRzfXE1OiOuJ.HHwVuI4P/BQrR/eKgYOioevIrgYYw.HpeP/sxCR3M38SW/"
  - username: "jroe"
    realname: "Jane Roe"
    password: "$6$wQhvxq3C.egKzrGi$na0M4jn3bi1lM2dz2YvdbAvvJBvbg4iGH1K6j7sHnZZt7mZggexHPvxOT799pfaDKmU6xDrbtbrLsxviGyABA0"
  - username: "testuser"
    realname: "Test User"
    password: "$6$U24oz4dsfdYD/LZ$fuziBEkc2q/POHSEvfcuTaD6wFTF.49RbU8z8JLQk3oki/He87cYqpSZtL16A11EBaG6VdemXdy6\V/"

Я установил общедоступные ssh-ключи различных пользователей в каталог публичных ключей, который я поместил в переменную с именем «sshkey_path». Для каждого пользователя существует один файл открытого ключа (например, jdoe.pub).

Когда я запускаю playbook, создание учетной записи пользователя идет нормально, но часть authorized_keys говорит:

ERROR! 'with_item' is not a valid attribute for a Task

The error appears to have been in 'user-add.yaml': line 29, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


    - name: copy ssh keys to authorized_keys
      ^ here

Есть идеи, что может пойти не так? В принципе должно работать как есть похожие примеры найдено в Интернете. Я играл с форматом, но не могу заставить его работать. Ваши указатели ценятся.

Для потомков:

Наряду с ошибкой, отмеченной "linuxdynasty" относительно with_items, возникла еще одна ошибка в способе ссылки на файл ключа.

Я пробовал использовать следующий синтаксис:

key="{{ sshkey_path }}/{{ item.username }}.pub"

Но в данном случае это не сработает, потому что authroized_key ожидает файл. Чтобы получить это, нужно использовать «with_files» или «Поиск».

Чтобы он работал в моей ситуации, мне пришлось объединить несколько переменных вместе, что я и сделал с помощью этого Переполнение стека Почта. Последний синтаксис, который я придумал, был:

key="{{ lookup('file', sshkey_path+item.username+'.pub') }}"

и он работал нормально.

Причина сбоя в том, что сам плагин называется with_items а не with_item. Вы забыли s.