【Ansible】Ansible ~ 基本編 ~

 ■ はじめに

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) yumApacheのインストール 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] 以下を設定し、押下。。 + IPv4 CONFIGURATION : + Addresses : 192.168.56.【1~255の任意値】/24(ここでは、「192.168.56.1/24」)

[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であればブラウザからアクセスでもいい)

curl http://localhost

[5-2] 管理サーバから、以下のコマンドを実行する

curlでの確認 (GUIであればブラウザからアクセスでもいい)

curl http://192.168.56.12

# 参考文献
## 環境設定
** 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