Ansibleで管理対象のLinuxサーバに共通する設定を行います。
記事の目次
作業を行う前提を確認する!
作業を行う前提として、以下の作業が完了し、Ansibleでパスワード入力なしで接続できる環境が整っていることを前提とします。
Linuxサーバに共通して行うことができる設定内容を整理する!
Linuxサーバに共通して行うことができる設定内容を整理します。本稿では、以下の設定を行います。
- 追加ユーザを作成する。
- ディレクトリを追加する。(bin,log)
- hostsファイルを配布する。
- パッケージをインストールする。(sysstatパッケージ)
Playbookを用意する!
以下のPlaybookを用意しました。ユーザ作成時のパスワード「XXXXXXXXXX」が暗号化されていないのは、今後の課題です・・・。Debian系とRHEL系の区別は、自動でも行えますが、Inventoryで分ける仕様です。
--- - hosts: servers_linux become: true tasks: - name: create users ansible.builtin.user: name: "{{ item.name }}" password: "{{ 'XXXXXXXXXX' | ansible.builtin.password_hash('sha512') }}" uid: "{{ item.uid }}" shell: /bin/bash loop: - { name: 'usradm01', uid: 1001 } - { name: 'usradm02', uid: 1002 } - name: create directories usradmin bin ansible.builtin.file: path: /home/usradmin/bin mode: "0755" state: directory owner: usradmin group: usradmin - name: create directories usradmin log ansible.builtin.file: path: /home/usradmin/bin mode: "0755" state: directory owner: usradmin group: usradmin - name: transfer file /etc/hosts ansible.builtin.copy: src: /home/usradmin/doc/hosts/hosts dest: /etc/hosts owner: root group: root mode: "0644" - hosts: servers_debian become: true tasks: - name: update packages debian servers ansible.builtin.apt: update_cache: true - name: install sysstat package debian servers ansible.builtin.apt: name: - sysstat state: present - hosts: servers_rhel become: true tasks: - name: update packages rhel servers ansible.builtin.dnf: update_cache: true - name: install sysstat package rhel servers ansible.builtin.dnf: name: - sysstat state: present
Playbookを実行する!
Playbookを実行します。Playbookを直しながら繰り返し実行することを想定して、シェル化してみました。
$ cat ./setup_s2_servers_linux.sh #!/bin/bash INI_FILE=inventory.ini PLB_FILE=~setup_s2_servers_linux.yml ansible-playbook -i $INI_FILE $PLB_FILE
おわりに
本来、サーバ共通の設定は、commonのロールなどを作成して、Playbookを整理していく内容になると思います。この後は、個別のサーバの設定を行っていくPlaybookを作成していきます。
参考情報
関連記事
Ansible書籍(Amazon)
Ansible実践ガイド 第3版 impress top gearシリーズ
Ansibleクックブック impress top gearシリーズ