■ はじめに
https://dk521123.hatenablog.com/entry/2018/03/01/225732
https://dk521123.hatenablog.com/entry/2020/02/02/000000
の続き。
今回の目的
[a] ホスト(管理マシン)から ansible を実行することにより、 ゲスト(構築サーバ)に Apache を入れる
大まかな流れ
[1] 管理マシンから 構築サーバにssh通信できるようにする [2] 管理マシンにansible をインストールする [3] (Hello World的なこととして)構築サーバにApacheをインストール
■ 構築環境
(あくまで練習用の) 環境
* 作業OS : Windows10 * 仮想環境 : VirtualBox v5.2.8 * 管理マシン : CentOS7 (IP : 192.168.56.1) * 構築サーバ : CentOS7 (IP : 192.168.56.2) <= 管理対象
前提条件
* VirtualBoxおよびゲストOS(CentOS7)のインストールは行っているものとする
■ 構成図
+--------------+ +--------------+ | 管理マシン | | 構築サーバ | | CentOS7 | | CentOS7 | | 192.168.56.1 | | 192.168.56.2 | | | | | | Ansible | | Apache | +--------------+ +--------------+ +-------------------------------+ | VirtualBox | +-------------------------------+ | Windows10 | +-------------------------------+
ディレクトリ構成
管理マシン
````
/home/【ユーザ名】
+ helloworld
+ hosts ... インベントリファイル(管理対象(構築サーバ)のネットワーク情報を定義)
+ main.yml ... プレイブック(設定内容(ここではApache)を定義)
** main.yml の内容 **
1) yumでlibselinux-pythonのインストール(SELinux対策) 2) yumでApacheのインストール 3) Apache起動と自動起動化 4) ファイアウォールでHTTP/SSLをあける 5) Apacheの起動確認
# ■ 手順詳細 ** [1] 管理マシンから構築サーバにssh通信できるようにする **
[1-1] VirtualBox のネットワーク設定
[a] 「Oracle VM VirtualBox マネージャー」を立ち上げて、 「ゲストOS(管理マシン)」を右クリックし、「設定」を選択
[b] 設定画面において、[ネットワーク]-[アダプター2]を選択し、 以下を設定し、「OK」ボタン押下 + ネットワークアダプターを有効化:チェック入れる + 割り当て:内部ネットワーク + 名前:intnet
[1-2] ゲストOS のネットワーク設定 以下をを参考。
http://anything.hatenadiary.com/entry/2017/08/13/161328
[a] 以下のコマンドで、 NetworkManager Text User Interfaceを立ち上げる ~~~~~~ sudo nmtui ~~~~~~
[b] [Edit a connection]-[enp0s8(文字化けしている可能性あり)]を選択
[c] 以下を設定し、
[d]
[e] 以下のコマンドで、 NetworkManager Text User Interfaceを再起動 ~~~~~~ sudo systemctl restart NetworkManager ~~~~~~
[1-3] 「ゲストOS(構築サーバ)」に対しても、[1-1]~[1-2]を行う **
IPアドレスは、ここでは、「192.168.56.2/24」にする。
** [2] 管理マシンにansible をインストール **
[2-1] 管理マシンにansible をインストール * 以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2020/02/02/000000 ** [3] 構築サーバを設定する **
[3-1]は必須ではないが、
[3-1] 構築サーバから、以下のコマンドで、ansible用の実行ユーザ作成
sudo useradd 【任意のユーザ名】で、ansible用の実行ユーザ作成
sudo useradd ansible
sudo passwd 【任意のユーザ名】で、ansible用の実行ユーザのパスワードを設定
sudo passwd ansible
パスワードを設定
実行ユーザのsudo権限付与(「 #!!ADD!!」を追記)
sudo visudo -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Defaults specification
Defaults:ansible !requiretty #!!ADD!!
root ALL=(ALL) ALL ansible ALL=(ALL) NOPASSWD:ALL #!!ADD!! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[3-2] 管理サーバから、以下のコマンドでSSH接続できるか確認する sudo ssh -l ansible 192.168.56.2
** [4] 構築サーバにApacheをインストール **
[4-1] インベントリファイル「hosts」を作成する mkdir -p ~/helloworld cd ~/helloworld vi hosts hosts [localhost] 192.168.56.12
[all:vars] ansible_ssh_user=ansible ansible_ssh_pass=password
[4-2] プレイブック「main.yml」を作成する vi main.yml main.yml - hosts: all become: yes tasks: - name: Install libselinux-python yum: name=libselinux-python state=present - name: Install Apache yum: name=httpd state=latest - name: Start Apache service: name=httpd state=started enabled=yes - name: firewall-cmd allow Apachei(HTTP) firewalld: service=http permanent=true state=enabled immediate=true - name: firewall-cmd allow Apache(SSL) firewalld: service=https permanent=true state=enabled immediate=true - name: Check to start Apache shell: ps aux | grep httpd register: ps_result changed_when: false - debug: var=ps_result.stdout_lines when: ps_result | success
[4-3] プレイブックを実行 ansible-playbook -i hosts main.yml
** [5] 動作確認 **
[5-1] 構築サーバ内で以下のコマンドを実行する
Apacheサービスの状態確認
sudo systemctl status httpd
curlでの確認 (GUIであればブラウザからアクセスでもいい)
[5-2] 管理サーバから、以下のコマンドを実行する
curlでの確認 (GUIであればブラウザからアクセスでもいい)
# 参考文献 ## 環境設定 ** VirtualBoxの設定 ** https://qiita.com/areaz_/items/c9075f7a0b3e147e92f2 ** ネットワークの設定 ** http://anything.hatenadiary.com/entry/2017/08/13/161328 ** ファイアウォールの設定 ** https://qiita.com/m0riiiii/items/62340b18fc64b45bd02e ** サンプル ** http://koboldtodragon.hatenablog.com/entry/2017/01/01/013000 # 関連記事 ** Ansible ~ 基礎知識編 ~ ** https://dk521123.hatenablog.com/entry/2018/03/01/225732 ** Ansible ~ インストール / ローカルでのAnsible使用 ~ ** https://dk521123.hatenablog.com/entry/2020/02/02/000000