Добавить несколько ключей SSH с помощью ansible

Я написал доступный скрипт для удаления ключей SSH с удаленных серверов:

---
- name: "Add keys to the authorized_keys of the user ubuntu"
  user: ubuntu
  hosts: www
  tasks:
  - name: "Remove key #1"
    authorized_key: user=ubuntu key="{{ item }}" state=absent
    with_file:
     - id_rsa_number_one.pub
  - name: "Remove key #2"
    authorized_key: user=ubuntu key="{{ item }}" state=absent
    with_file:
     - id_rsa_number_two.pub
...

Добавление каждого файла в качестве отдельной задачи абсурдно, поэтому я попытался использовать _2 _:

  - name: "Remove all keys at once"
    authorized_key: user=ubuntu key="{{ item }}" state=absent
    with_fileglob:
      - /Users/adamatan/ansible/id_rsa*.pub

Но это не работает с такими строками:

не удалось: [www.example.com] => (item = / Users / adamatan / ansible / id_rsa_one.pub) => {"failed": true, "item": "/Users/adamatan/ansible/id_rsa_one.pub" } msg: указан неверный ключ: /Users/adamatan/ansible/id_rsa_one.pub

Тот же ключевой файл успешно удаляется с помощью уникальной задачи, но не выполняется, когда он является частью fileglob.

Как я могу добавить или удалить SSH-ключи в пакетном режиме с помощью ansible?


person Adam Matan    schedule 05.10.2014    source источник


Ответы (1)


Я считаю, что вы получаете только имена файлов с помощью with_fileglob, но with_file извлекает содержимое файла. А для модуля authorized_key требуется фактический ключ.

Таким образом, вы все равно должны использовать цикл, используя with_fileglob, но вместо отправки имени файла в параметр "key =" вы должны использовать плагин поиска файлов).

- name: "Remove all keys at once"
    authorized_key: user=ubuntu key="{{ lookup('file', item) }}" state=absent
    with_fileglob:
      - /Users/adamatan/ansible/id_rsa*.pub
person Ramon de la Fuente    schedule 05.10.2014
comment
Так что эта модификация отлично подходит для массового обновления / удаления записей. Вот моя проблема - у меня есть ключи на серверах от кого-то, кого здесь больше нет. Как я могу очистить и перезаписать файл authorized_keys основным списком активных ключей? Когда я запускаю этот сценарий, он удаляет (если отсутствует) мои активные ключи или добавляет (если есть), но никогда не удаляет ключи, которых нет в моих файлах * .pub. - person Valien; 10.08.2016
comment
@Valien для нескольких эксклюзивных ключей, см. Пример в этом запросе на вытягивание . - person andrew-e; 24.10.2016
comment
Вы также можете создать ~/.ssh/ и скопировать статические authorized_keys файлы для всех пользователей в некоторых группах узлов. В этом случае у вас будет полный контроль над содержимым файла. - person andrew-e; 24.10.2016