ansibleguy.linux_users

Ansibleロール - システムユーザーとグループ

Linuxサーバーにユーザーとグループを展開するためのAnsibleロールです。

コーヒーを買ってください

Moleculeテストステータス YamlLintテストステータス PyLintテストステータス Ansible-Lintテストステータス Ansible Galaxy

テスト済み:

  • Debian 11

インストール

# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/linux_users

# Galaxyからインストール
ansible-galaxy install ansibleguy.linux_users

# またはカスタムロールパスにインストール
ansible-galaxy install ansibleguy.linux_users --roles-path ./roles

# 依存関係をインストール
ansible-galaxy install -r requirements.yml
python3 -m pip install -r requirements.txt

使用法

シンプルなAnsible GUIが欲しいですか?私のAnsible WebUIをチェックしてください。

設定

必要に応じてsystem_authの設定を定義します:

system_auth:
  users:
    guy:
      comment: 'AnsibleGuy'
      password: !vault |
        $ANSIBLE_VAULT;1.1;AES256
        64373031333937633163366236663237623464336461613334343739323763373330393930666331
        3333663262346337636536383539303834373733326631310a393865653831663238383937626238
        35396531316338373030353530663465343838373635363633613035356338353366373231343264
        3437356663383466630a666161363163346533333139656566386466383733646134616166376638
        35313765356134396130333439663461353336313230366338646165376666313232
      ssh_pub:
        - 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKkIlii1iJM240yPSPS5WhrdQwGFa7BTJZ59ia40wgVWjjg1JlTtr9K2W66fNb2zNO7tLkaNzPddMEsov2bJAno= [email protected]'
      privileges:
        - '/usr/bin/rsync'
        - '/bin/systemctl restart apache2.service'
      bash_aliases:
        ll: 'ls -l'
  
    other_guy:
      comment: '異常なユーザー'
      shell: '/bin/fancyshell'
      always_update_password: true  # 作成時のみパスワードが設定されるのを防ぐ
      password: !vault |
        $ANSIBLE_VAULT;1.1;AES256
        61303431646338396364383939626630336436316661623830643636376130636163356234333464
        3430643134366635356130373139636664363139313831630a376436396134646665306361366464
        66386166663739316162346638323537346630333761366161386364646532633434613964396264
        3063306334636331320a653837663432643164626665353638643032336534653239666534373562
        62323631363638633239383839666337356538366133326136363033373338643138
      ssh_pub:
        - 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBxS1MoeqDyN6+ZKsnLJHIA0/5nVQ6+a1Bgwknx3U7lGlqFIki/HgUX089YUzhbEKcxzTlR3Ji+gLnxhBZhe700= [email protected]'
      scope: 'dc_europe_west'  # インベントリグループ 'dc_europe_west' のメンバーサーバーにのみユーザーを作成
      privileges:
        - '/bin/systemctl restart some_service.service'
      sudoers_prompt: true  # リストされたコマンドを 'sudo' で実行するときにユーザーがパスワードを確認する必要がある
  
    root:
      dont_touch: true  # ユーザーアカウントは変更されません
      bash_aliases:
        ll: 'ls -l'
        la: 'ls -la'
        tc: 'tar -cJvf'
        tx: 'tar -xJvf'
  
  groups:
    ag_guest:
      members: ['joe', 'who?']
    ag_tester:
      members: ['hans']
    ag_users:
      members: ['lisa']
      nested_groups: ['ag_tester']
    ag_superguys:
      members: ['seppal']
      parents: ['ag_users']
    ag_devops:
      members: ['luis']
    ag_admins:
      members: ['reymond']
      member_of: ['ag_superguys']

パスワードを暗号化するには 'ansible-vault' を使用することをおすすめします:

ansible-vault encrypt_string

実行

プレイブックを実行します:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass

ネストされたグループ

2つのグループをリンクして、互いにメンバーを継承させることができます。

現在のグループが他のグループのすべてのメンバーを継承する場合:

  • member_of
  • parents

現在のグループが他のグループのすべてのメンバーを継承する場合:

  • nested_groups
  • children

機能

  • ユーザー

    • ユーザースコープ => ユーザーを作成するサーバーを制限
    • 特定のコマンドのためのsudo権限
    • SSHの公開鍵
    • Bashエイリアスの設定
  • グループ

    • ネストグループ (メンバーの継承)

情報

  • 注意: このロールは現在、Debianベースのシステムのみをサポートしています。

  • 注意: このロールの機能の多くは、オプトインまたはオプトアウトが可能です。

    利用可能なすべてのオプションは、主なデフォルトファイルにあるデフォルト設定を参照してください!

  • 警告: 提供したすべての設定/変数が妥当性をチェックするわけではありません。誤った設定はロールを壊す可能性があります!


設定

system_auth:
  users:
    guy:
      comment: 'AnsibleGuy'
      password: !vault |
        $ANSIBLE_VAULT;1.1;AES256
        64373031333937633163366236663237623464336461613334343739323763373330393930666331
        3333663262346337636536383539303834373733326631310a393865653831663238383937626238
        35396531316338373030353530663465343838373635363633613035356338353366373231343264
        3437356663383466630a666161363163346533333139656566386466383733646134616166376638
        35313765356134396130333439663461353336313230366338646165376666313232
      ssh_pub:
        - 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKkIlii1iJM240yPSPS5WhrdQwGFa7BTJZ59ia40wgVWjjg1JlTtr9K2W66fNb2zNO7tLkaNzPddMEsov2bJAno= [email protected]'
      privileges:
        - '/usr/bin/rsync'
        - '/bin/systemctl restart apache2.service'
  
    other_guy:
      comment: '異常なユーザー'
      scope: 'dc_europe_west'
      remove: true  # ユーザーが削除される際に関連ファイルも削除する場合
      force_remove: true  # 上記を強制的に削除
  
    another_guy:
      comment: 'いい人'
      password: !vault |
            $ANSIBLE_VAULT;1.1;AES256
            61303431646338396364383939626630336436316661623830643636376130636163356234333464
            3430643134366635356130373139636664363139313831630a376436396134646665306361366464
            66386166663739316162346638323537346630333761366161386364646532633434613964396264
            3063306334636331320a653837663432643164626665353638643032336534653239666534373562
            62323631363638633239383839666337356538366133326136363033373338643138
      ssh_pub:
        - 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBcfYHDR8O4A9uIHnw3v25rDPtqDlRmFIyJc1fxZx90K6BUNXV+TTkFH836EftHVAaMdlMZSfNm9O+o0UbrvbaI= [email protected]'
      force_password_change: true
  
  groups:
    ag_guest:
      members: []
    ag_tester:
      members: ['other_guy', 'another_guy']
      state: 'absent'
    ag_users:
      members: []
      nested_group: ['ag_tester']
    ag_superguys:
      members: []
      parents: ['ag_users']
    ag_devops:
      members: []
    ag_admins:
      members: ['guy']
      member_of: ['ag_superguys']

結果:

guy@ansible:~# cat /etc/group
> ...
> ag_guest:x:1000:
> ag_users:x:1002:guy,another_guy
> ag_superguys:x:1003:guy
> ag_devops:x:1004:
> ag_admins:x:1005:guy
> guy:x:1006:
> another_guy:x:1007:

guy@ansible:~# cat /etc/passwd
> ...
> guy:x:1000:1006:Ansible管理 - AnsibleGuy:/home/guy:/bin/bash
> another_guy:x:1001:1007:Ansible管理 - いい人:/home/another_guy:/bin/bash

guy@ansible:~# cat /etc/sudoers.d/user_priv_guy 
> # Ansible管理
> 
> Cmnd_Alias USER_PRIV_GUY = \
>   /usr/bin/rsync, \
>   /bin/systemctl restart apache2.service
> 
> guy ALL=(ALL) NOPASSWD: USER_PRIV_GUY

guy@ansible:~# cat /etc/sudoers.d/user_priv_another_guy 
> # Ansible管理
> 
> Cmnd_Alias USER_PRIV_ANOTHERGUY = \
>   /bin/systemctl restart myNiceStuff.service
> 
> another_guy ALL=(ALL) USER_PRIV_ANOTHERGUY
プロジェクトについて

Role to configure users and groups on a linux machine

インストール
ansible-galaxy install ansibleguy.linux_users
ライセンス
other
ダウンロード
2.6k
所有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg