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

