課題
新しいマシンを立ち上げるたびにユーザの公開鍵認証のためのセットアップを行うのが面倒くさい。自動化したい。
※ほぼ備忘録
※事前にsshdがインストールされ公開鍵認証が許可されていること
解決策
以下のようなAnsibleプレイブックを利用する。varsセクションに記載した変数は値を適宜変更またはコマンドラインから指定すること。
- name: setup public key login hosts: all gather_facts: no become: yes vars: user_name: "<<user_name>>" public_key: "<<key_name>>.pub" secret_key: "<<key_name>>" tasks: - name: create user ansible.builtin.user: name: "{{ user_name }}" password: "{{ user_name | password_hash('sha512') }}" shell: "/bin/bash" - name: create ssh directory ansible.builtin.file: path: "/home/{{ user_name }}/.ssh" state: "directory" owner: "{{ user_name }}" group: "{{ user_name }}" mode: "755" - name: copy secret key ansible.builtin.copy: remote_src: false src: "{{ secret_key }}" dest: "/home/{{ user_name }}/.ssh/{{ secret_key }}" owner: "{{ user_name }}" group: "{{ user_name }}" mode: "600" - name: copy public key as authorized_keys ansible.builtin.copy: remote_src: false src: "{{ public_key }}" dest: "/home/{{ user_name }}/.ssh/authorized_keys" owner: "{{ user_name }}" group: "{{ user_name }}" mode: "600"
利用例
$ ansible-playbook -i inventory.ini --extra-vars "user_name=hogehoge public_key=id_rsa.pub secret_key=id_rsa" playbook.yml
所感
小さいことからコツコツ自動化しましょう。