1

私の環境は、2 つの Web サーバーと 2 つの db サーバーで構成されています。

私のチームに新しい開発者が入ってきました。彼の ssh キーをすべてのサーバーにデプロイする必要があります。

ubuntu彼は、ユーザーとwww-dataWeb サーバーの両方、およびubuntudb サーバーのユーザーと接続できる必要があります。

私のサーバーは Ansible でプロビジョニングされています。

どうすればできますか?

4

2 に答える 2

4

そのように ssh-keys タスクを作成して解決しました。

roles/ssh-keys/tasks/main.yml

---
- name: add authorized key
  authorized_key: user={{ item }} key="{{ lookup('file', 'authorized_keys') }}"
  with_items: authorized_ssh_users
  when: authorized_ssh_users is defined

roles/ssh-keys/files/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev1] dev1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev2] dev2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev3] dev3

hosts/production

[webservers]
webserv1-hostname
webserv2-hostname

[webservers:vars]
authorized_ssh_users=['ubuntu','www-data']

[dbservers]
dbserv1-hostname
dbserv2-hostname

[dbservers:vars]
authorized_ssh_users=['ubuntu']

次にplaybook.yml

- name: Provision ssh keys
  hosts: all
  sudo: true
  roles:
  - ssh-keys

このソリューションを使用すると、キーを展開するサーバー/ユーザーのあらゆる組み合わせを管理できます。

于 2015-08-21T07:17:00.547 に答える
0

この役割はあなたにとって非常にうまく機能します。これを Galaxy に取り込もうとしていますが、何らかの理由でインポートされていません。

https://github.com/smiller171/ansible-user-management

このロールは、次のように、必要なユーザーとグループ、および削除するユーザーの変数を渡すだけで設定されるように設定されています。

---
- hosts: all
  sudo: yes
  roles:
  - scott.miller171.manage_users
  vars:
  - manage_users_allowed:
    - name: foo
      authorized:
      - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAlPYybp3CWDzRPo0uF/woyqkfhpZK2T7zn16z+fGYlRQl6gXATIUB4JYfr9pfD+SOW2T4X78P+/h1o4QPCwoesLacaFEFGwUb+SzhVVm6B6q4WMAiJWD6OVXh+SVVvD9rdcz5RMVLqQngrRqBlj4kBIMQ3S8h1cCESbR2P6jszgFj0I6p3tQCpo9yjcVwLqvWFKJgzEm2E2wV/gmrc0PhVRP2guIRN4p6M2ZyIPprdZ6PA8m7Rs4yN3jQ/0alrQ23ECCU4lHoVG9fwvLIq1vh4ikPcUrdA8sSHTE1pkpzvrTv7FtkuUcBrDMedFE7E8dB9pPS+vXIBWVUYJhp9WzVkQ== user@domain.com"

  - manage_users_unauthorized:
    - foobar

  - manage_users_groups: "sudo,adm,dialout,cdrom,floppy,audio,video,plugdev"
于 2015-08-23T01:02:30.447 に答える