AWXでUbuntuサーバーの初期設定をやってしまおう
はじめに
前回までAnsibleTowerやAWXを現在のバージョンで建てることをやりました。 なので、今回はAWXを使って、Linuxをサーバー運用するときの初期設定をやっちゃえば少し楽なんじゃないかと思ったので、それを実際にやってみようと思います。
ローカル環境
機種: M1 Macbook Air(2020)
OS: MacOS Sonoma 14.6.1
メモリ: 16GB
AWX: ver.24.6.1
AWX operator: ver.2.19.1
minikube: v1.33.1
VM環境
OS: Linux (ubuntu 24.04)
サイズ: Standard B2s (2 vcpu 数、4 GiB メモリ)
使用するplaybook
今回は、下記のブログのものを参考に自動化させてしまおうと思います。 これに加えて、言語とタイムゾーンの設定も入れていきます。
※この記事の序盤のssh設定の部分に関しては、今回VM作成の際に設定してしまったので飛ばしています。
以下が私の作成したyamlになります。
こちらをpushして、githubに乗せています。
---
- name: Set up Ubuntu
hosts: all
become: yes
tasks:
- name: "setting ssh access log"
lineinfile:
path: /etc/ssh/sshd_config.d/50-cloud-init.conf
regexp: "SyslogFacility AUTH"
line: SyslogFacility AUTH
backrefs: false
- name: "setting ssh access log"
lineinfile:
path: /etc/ssh/sshd_config.d/50-cloud-init.conf
regexp: "LogLevel INFO"
line: LogLevel INFO
backrefs: false
- name: Install ufw
apt:
name: ufw
- name: allow ssh
command: ufw allow ssh
- name: Allow everything and enable UFW
expect:
command: ufw enable
responses:
"Command may disrupt existing ssh connections. Proceed with operation \\(y|n\\)?": y
- name: Set logging
command: ufw logging medium
- name: "setting auto-reboot"
lineinfile:
path: /etc/apt/apt.conf.d/50unattended-upgrades
regexp: '^(# )Unattended-Upgrade::Automatic-Reboot "false";'
line: Unattended-Upgrade::Automatic-Reboot "true";
backrefs: false
- name: "setting auto-reboot"
lineinfile:
path: /etc/apt/apt.conf.d/50unattended-upgrades
regexp: '^(# )Unattended-Upgrade::Automatic-Reboot-Time "02:00";'
line: Unattended-Upgrade::Automatic-Reboot "02:00";
backrefs: false
- name: reboot service
command: systemctl restart unattended-upgrades.service
- name: install Rsyslog
command: apt install rsyslog
- name: install Logrotate
command: apt install logrotate
- name: "setting Logrotate"
lineinfile:
path: /etc/logrotate.conf
regexp: "^rotate 4"
line: rotate 48
backrefs: false
- name: "setting Logrotate"
lineinfile:
path: /etc/logrotate.conf
regexp: "^dateext"
line: dateext
backrefs: false
- name: "setting Logrotate"
lineinfile:
path: /etc/logrotate.conf
regexp: "^#compress"
line: compress
backrefs: false
- name: reboot service
command: systemctl restart logrotate.service
- name: Install jp lang
apt:
name: language-pack-ja-base
- name: Install jp lang
apt:
name: language-pack-ja
- name: setting jp lang
command: update-locale LANG=ja_JP.UTF-8 LANGUAGE=”ja_JP:ja”
- name: change TZ to Tokyo
command: timedatectl set-timezone Asia/Tokyo
簡単に何をしているかを説明すると、上から
- sshのアクセスログを有効にしている。
- ファイアウォールの設定のため、ufwを導入してsshだけポート開放して、ufwのアクセスログを有効にしている。
- Ubuntuが自動アップデートしたときに、自動で再起動される設定をしている。
- Rsyslog と Logrotate を使用して自動ログローテーション、自動削除などの機能を導入している。 Loglotateサービスを再起動して、設定を反映させている。
- サーバーの日本語設定とタイムゾーンを東京に設定している。
実行準備
私の環境で必要な設定はリソース欄になります。 私個人のGithubからplaybookを引っ張ってきて、これを利用するようにしています。
Githubに乗せてある資材を引っ張ってくる設定(プロジェクト)
私のプロジェクトは以下のように設定して、Githubにプッシュしてある資材を取り出しています。
認証情報
私は、azureVMに対して実行したいので下の画像のような設定にしています。
インベントリー、ホストの設定
インベントリー欄から追加をして作成をしてください。
※注意
この先のテンプレート設定では、ホストの設定はインベントリー単位での設定をすることになるので、ホスト欄からホストを指定してもよいですが、インベントリーで作ったところからホスト設定したほうが、事故が少なくなると思います。
テンプレート設定(実行設定)
ここで、設定したものを実行したときに下記の実行結果に繋がります。
プロジェクト、インベントリー、認証情報、そしてplaybookは自分で作ったものを選択していきます。
これらが設定できたら、テンプレートから実行ができます。
実行結果
実行完了されると、AWX側では以下のような表示になるかと思います。
実行結果を簡単に確認していくと、タイムゾーンの設定はされていると確認できます。
日本語表記の件についても、
こちらは
man apt
での表示結果です。 きちんと日本語表記ですね。
複数サーバーへのアクセス
自動化させる大きな利点の一つでもある複数サーバーへ同時に設定が可能にな
ることが挙げられると思いますが、AWXではホストを追加するだけでそれができるので、非常に楽です。
認証情報は都度追加していただけると良いです。
※yaml内でhosts: allと記述されている必要はあります。
ホスト設定画面
実行画面
まとめ
今回は、基本的なUbuntuでのサーバー初期設定をAWXで行いました。 初期設定は、どんな事するときでも必ず通る手順だと思いますので、こういった部分をAWXで自動化させてしまえば非常に作業が楽かなと思います。 複数サーバーに行うときでも、ホストを追加していけば、同じようにできますのでぜひAWXを業務で活用してみてはいかがでしょうか。
Discussion