1
私は2つの不可欠な役割に取り組んでいます.1つはシステムをブートストラップし、もう1つはOSを更新してリブートします。ユーザーがプレイブックの一部としてアクセスできないときに、冪等を維持することができない
これらの役割は、master.yml
ファイルによって起動されています:
---
- hosts: all
remote_user: root
roles:
- rh_bootstrap
- hosts: all
remote_user: devops
become: true
roles:
- os_update
...
ブートストラップ役割は、SELinuxのために必要なパッケージをインストールDevOpsチームのユーザを追加し、コピーしたSSHキー、およびSSHを硬化させます。
---
- name: Ensure that libselinux is installed
yum:
name: libselinux-python
state: installed
- name: Create devops user
user:
name: devops
state: present
comment: Create devops user
- name: Install SSH key for devops user
authorized_key:
user: devops
key: "ssh-rsa MYKEYHERE"
state: present
- name: Make sure devops user is sudoer with no pw requirements
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^devops ALL\='
line: 'devops ALL=(ALL) NOPASSWD:ALL'
validate: 'visudo -cf %s'
- name: Ensure SELinux is Enforcing
selinux:
policy: targeted
state: enforcing
- name: Disable empty password login
lineinfile: dest={{ sshd_config }} regexp="^#?PermitEmptyPasswords" line="PermitEmptyPasswords no"
notify: restart sshd
- name: Disable root SSH login
lineinfile: dest={{ sshd_config }} regexp="^#?PermitRootLogin" line="PermitRootLogin no"
notify: restart sshd
- name: Disable password login
lineinfile: dest={{ sshd_config }} regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
notify: restart sshd
...
この時点で、master.ymlはdevopsユーザーに切り替えます。 devopsユーザーには、anicial.cfgのデフォルトで定義されているキーがあります。
master.yml
を再実行しようとすると、rootログインを完全に無効にしてエラーが発生するため、rootユーザーがホストに接続できなくなるという問題があります。ユーザーがログインできないようにするための優雅な方法はありますか?要するに
ありがとうございました - 私は仕事から家に帰ると、このアプローチを今夜後に撮影します。 私はlineinfileではなくテンプレートの使用を考えていませんでしたが、それは間違いありません。 後でrh_bootstrapを "再実行可能"にする方法についてのアイデアはありますか?新しい緑色のホストを使用し、rootとしてログインし、非ルートのCMユーザを設定し、rootログインを許可することは悪い習慣と考えられるため、rootをロックアウトすることを意図しています。作業の本質上、私は2回実行できるものをどのように作ることができるかわかりません。 – Matthew
'rh_bootstrap'には、後の実行では使用できないタスクはありません。早くやれよ。 – techraf
ルート接続を無効にすると、後で実行するときにルートユーザーとして接続できません。だから、もう一度それを実行しようとすると、(私はあなたを誤解していない限り)SSH接続の障害が発生します。 – Matthew