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

