Ansibleで管理対象のLinuxサーバに共通する設定を行う!

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シリーズ