■ はじめに
https://blogs.yahoo.co.jp/dk521123/37419935.htmlで扱った ansible の続き。 おおよその流れは、以下の通り。 [1] ゲストOS(管理マシン) から ゲストOS(構築サーバ) にssh通信できるようにする [2] ゲストOS(管理マシン)にansible をインストールする [3] (Hello World的なこととして)ゲストOS(構築サーバ)にApacheをインストール
■ 構築環境
あくまで練習用の環境* 作業OS : Windows10 * 仮想環境 : VirtualBox v5.2.8 * ゲストOS(管理マシン) : CentOS7 (IP : 192.168.56.1) * ゲストOS(構築サーバ) : CentOS7 (IP : 192.168.56.2) <= 管理対象
前提条件
* VirtualBoxおよびゲストOS(CentOS7)のインストールは行っているものとする => それぞれの作業自体は、以下の関連記事を参照のこと。VirtualBox
https://blogs.yahoo.co.jp/dk521123/31186721.html
CentOS7
https://blogs.yahoo.co.jp/dk521123/36252928.html
■ 構成図
+--------------+ +--------------+ | 管理マシン | | 構築サーバ | | 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] 以下を設定し、<OK>押下。。 + IPv4 CONFIGURATION : <Manual> + Addresses : 192.168.56.【1~255の任意値】/24(ここでは、「192.168.56.1/24」) [d] <Back>押下。<Quit>押下。 [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 をインストールsudo yum install epel-release -y sudo yum install ansible -y # 確認1:バージョン確認 ansible --version # 確認2:[WARNING]が2つほどでるが、エラーがでなければOK ansible localhost -m ping
[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 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [localhost] 192.168.56.12 [all:vars] ansible_ssh_user=ansible ansible_ssh_pass=password -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[4-2] プレイブック「main.yml」を作成する
vi 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であればブラウザからアクセスでもいい) curl http://localhost[5-2] 管理サーバから、以下のコマンドを実行する
# curlでの確認 (GUIであればブラウザからアクセスでもいい) curl hhttp://192.168.56.12
参考文献
環境設定
https://qiita.com/areaz_/items/c9075f7a0b3e147e92f2http://anything.hatenadiary.com/entry/2017/08/13/161328
ファイアウォールの設定
https://qiita.com/m0riiiii/items/62340b18fc64b45bd02e