Я пытаюсь разработать способ управления pubkey одного пользователя на нескольких сайтах, а также перенести этот ключ на несколько $ HOME каталоги. Причина существования; наши разработчики входят в систему как сами, чтобы что-то проверить, запустить sudo
и т.д., однако они развертывают код как пассажир пользователь через SSH, поэтому его pubkey должен быть в ~ / домой / пассажир / .ssh / authorized_keys также.
Я не уверен, что меняю AuthorizedKeysFile
в /etc/ssh/sshd_config
сделало бы это менее безумным, но так как я почти закончил со своим текущим учебником, я решил опубликовать вопрос как есть и посмотреть, что из этого выйдет. Возможно, это действительно лучше было бы решить другим способом.
В моем homedirs.yml
файла, я создаю домашние каталоги пользователей (они существуют в LDAP), а затем перемещаю их открытый ключ на место. Это отлично работает для их собственного домашнего каталога, но passenger
пользователю также нужен этот ключ. Поскольку я могу использовать эту книгу для других пользователей и хостов, я определил to_user:
список, который определяет, для каких домашних каталогов должен быть настроен pubkey.
Как мне перебрать {{ item.to_user }}
список в authorized_key:
играть где {{ item.name }}
в настоящее время упоминается?
учебник
---
- hosts: all
vars_files:
- ../group_vars/homedirs.yml
gather_facts: false
tasks:
- name: Set up home directory
when: inventory_hostname in item.allowed_hosts
file:
path: "/home/{{ item.name }}"
state: directory
owner: "{{ item.name }}"
group: "{{ item.group }}"
mode : 0750
with_items: "{{ homedirs }}"
- name: setup ssh pub key
when: inventory_hostname in item.allowed_hosts
authorized_key:
user: '{{ item.name }}'
state: present
key: '{{ item.pubkey }}'
with_items: "{{ homedirs }}"
homedirs.yml
# homedirs.yml
homedirs:
- name : usr123
group : developers
pubkey : "{{ lookup('file', '../group_vars/pubkeys/user123@somehost.pub') }}"
to_user:
- user123
- passenger
allowed_hosts :
- web1.my.com
- web1.test.my.com
- name : usr555
group : admin
pubkey : "{{ lookup('file', '../group_vars/pubkeys/user555@somehost.pub') }}"
to_user:
- user555
- sysadmin
allowed_hosts :
- blah.blah.host
Это классическое требование к with_subelements
петля в Ansible:
- name: Set up home directory
when: inventory_hostname in item.0.allowed_hosts
file:
path: "/home/{{ item.1 }}"
state: directory
owner: "{{ item.1 }}"
group: "{{ item.0.group }}"
mode : 0750
with_subelements:
- "{{ homedirs }}"
- to_user