authorized_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-ключи различных пользователей в каталог publickeys, который я поместил в переменную с именем "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

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

1
задан 25 July 2016 в 23:47
2 ответа

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

3
ответ дан 3 December 2019 в 16:33

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

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

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

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

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

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

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

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

4
ответ дан 3 December 2019 в 16:33

Теги

Похожие вопросы