2016年2月13日土曜日

Ansibleを使ってFedora23にサーバを構築していく〜playbookでApacheインストール

このエントリーをはてなブックマークに追加
少しコーナー化してきた感じもあるので、「Ansible」のラベルから纏めてみてください。


まずはApacheをインストールするためのPlaybookを作成する。InstallHttpd.ymlとかにしておく。
---
- hosts: ChildServers
  gather_facts: no
  tasks:
    - name: install httpd by dnf
      dnf: name=httpd state=latest
      register: results
    - debug: var=results
よし、実行。
# ansible-playbook InstallHttpd.yml --private-key=~/.ssh/ChildOneSV

PLAY [ChildServers] ***********************************************************

TASK: [install httpd by dnf] **************************************************
failed: [172.16.33.174] => {"failed": true}
msg: `python-dnf` is not installed, but it is required for the Ansible dnf module.

FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************
           to retry, use: --limit @/root/InstallHttpd.retry

172.16.33.174              : ok=0    changed=0    unreachable=0    failed=1
なるほど。勢いづいてdnfモジュールを使おうとしたけどもChildOneSVの方にpython-dnfがインストールされていないので怒られた。インストールして再チャレンジする。
# dnf -y install python-dnf
メタデータの期限切れの確認は、0:36:24 前の Sat Feb 13 01:30:53 2016 に実施しました。
依存性が解決されました。
========================================================================================================================
 Package                        アーキテクチャ        バージョン                           リポジトリ              容量
========================================================================================================================
インストール:
 pygpgme                        x86_64                0.3-13.fc23                          fedora                  77 k
 pyliblzma                      x86_64                0.5.3-14.fc23                        fedora                  54 k
 python-hawkey                  x86_64                0.6.2-3.fc23                         updates                 78 k
 python-iniparse                noarch                0.4-16.fc23                          fedora                  45 k
 python-libcomps                x86_64                0.1.7-1.fc23                         fedora                  47 k
 python-librepo                 x86_64                1.7.16-2.fc23                        fedora                  53 k
 python2-dnf                    noarch                1.1.6-2.fc23                         updates                449 k
 rpm-python                     x86_64                4.13.0-0.rc1.11.fc23                 updates                100 k

トランザクションの要約
========================================================================================================================
インストール  8 パッケージ

総ダウンロード容量: 902 k
インストール済み容量: 3.0 M
パッケージをダウンロードしています:
(1/8): pyliblzma-0.5.3-14.fc23.x86_64.rpm                                               145 kB/s |  54 kB     00:00
(2/8): python2-dnf-1.1.6-2.fc23.noarch.rpm                                              1.1 MB/s | 449 kB     00:00
(3/8): pygpgme-0.3-13.fc23.x86_64.rpm                                                   187 kB/s |  77 kB     00:00
(4/8): python-iniparse-0.4-16.fc23.noarch.rpm                                           474 kB/s |  45 kB     00:00
(5/8): python-libcomps-0.1.7-1.fc23.x86_64.rpm                                          543 kB/s |  47 kB     00:00
(6/8): python-librepo-1.7.16-2.fc23.x86_64.rpm                                          555 kB/s |  53 kB     00:00
(7/8): python-hawkey-0.6.2-3.fc23.x86_64.rpm                                            977 kB/s |  78 kB     00:00
(8/8): rpm-python-4.13.0-0.rc1.11.fc23.x86_64.rpm                                       1.2 MB/s | 100 kB     00:00
------------------------------------------------------------------------------------------------------------------------
合計                                                                                    399 kB/s | 902 kB     00:02
トランザクションの確認を実行中...
トランザクションの確認に成功しました。
トランザクションのテストを実行中...
トランザクションのテストに成功しました。
トランザクションを実行中...
  インストール    : rpm-python-4.13.0-0.rc1.11.fc23.x86_64                                                          1/8
  インストール    : python-hawkey-0.6.2-3.fc23.x86_64                                                               2/8
  インストール    : python-librepo-1.7.16-2.fc23.x86_64                                                             3/8
  インストール    : python-libcomps-0.1.7-1.fc23.x86_64                                                             4/8
  インストール    : python-iniparse-0.4-16.fc23.noarch                                                              5/8
  インストール    : pyliblzma-0.5.3-14.fc23.x86_64                                                                  6/8
  インストール    : pygpgme-0.3-13.fc23.x86_64                                                                      7/8
  インストール    : python2-dnf-1.1.6-2.fc23.noarch                                                                 8/8
  検証中          : python2-dnf-1.1.6-2.fc23.noarch                                                                 1/8
  検証中          : pygpgme-0.3-13.fc23.x86_64                                                                      2/8
  検証中          : pyliblzma-0.5.3-14.fc23.x86_64                                                                  3/8
  検証中          : python-iniparse-0.4-16.fc23.noarch                                                              4/8
  検証中          : python-libcomps-0.1.7-1.fc23.x86_64                                                             5/8
  検証中          : python-librepo-1.7.16-2.fc23.x86_64                                                             6/8
  検証中          : python-hawkey-0.6.2-3.fc23.x86_64                                                               7/8
  検証中          : rpm-python-4.13.0-0.rc1.11.fc23.x86_64                                                          8/8

インストール:
  pygpgme.x86_64 0.3-13.fc23            pyliblzma.x86_64 0.5.3-14.fc23            python-hawkey.x86_64 0.6.2-3.fc23
  python-iniparse.noarch 0.4-16.fc23    python-libcomps.x86_64 0.1.7-1.fc23       python-librepo.x86_64 1.7.16-2.fc23
  python2-dnf.noarch 1.1.6-2.fc23       rpm-python.x86_64 4.13.0-0.rc1.11.fc23

完了しました!

# ansible-playbook InstallHttpd.yml --private-key=~/.ssh/ChildOneSV

PLAY [ChildServers] ***********************************************************

TASK: [install httpd by dnf] **************************************************
changed: [172.16.33.174]

TASK: [debug var=results] *****************************************************
ok: [172.16.33.174] => {
    "var": {
        "results": {
            "changed": true,
            "invocation": {
                "module_args": "name=httpd state=latest",
                "module_complex_args": {},
                "module_name": "dnf"
            },
            "results": [
                "Installed: httpd-2.4.18-1.fc23.x86_64",
                "Installed: mailcap-2.1.45-1.fc23.noarch",
                "Installed: httpd-tools-2.4.18-1.fc23.x86_64",
                "Installed: httpd-filesystem-2.4.18-1.fc23.noarch",
                "Installed: apr-1.5.2-2.fc23.x86_64",
                "Installed: fedora-logos-httpd-22.0.0-2.fc23.noarch",
                "Installed: apr-util-1.5.4-2.fc23.x86_64"
            ]
        }
    }
}

PLAY RECAP ********************************************************************
172.16.33.174              : ok=2    changed=1    unreachable=0    failed=0

うまくいったみたいだ。インストール先のChildOneSVでhttpdが自動起動に登録されているかを見る。
# systemctl list-unit-files | grep httpd
httpd.service                               disabled
httpd.socket                                disabled
disabledになっている。これをenableにまで持って行ってみよう。先ほどのInstallHttpd.ymlに付け足す。
---
- hosts: ChildServers
  gather_facts: no
  tasks:
    - name: install httpd by dnf
      dnf: name=httpd state=latest
      register: results
    - debug: var=results
    - name: Auto Start httpd daemon
      service: name=httpd enabled=yes
      register: results
    - debug: var=results
実行あるのみ。
# ansible-playbook InstallHttpd.yml --private-key=~/.ssh/ChildOneSV

PLAY [ChildServers] ***********************************************************

TASK: [install httpd by dnf] **************************************************
changed: [172.16.33.174]

TASK: [debug var=results] *****************************************************
ok: [172.16.33.174] => {
    "var": {
        "results": {
            "changed": true,
            "invocation": {
                "module_args": "name=httpd state=latest",
                "module_complex_args": {},
                "module_name": "dnf"
            },
            "results": [
                "Installed: httpd-2.4.18-1.fc23.x86_64",
                "Installed: mailcap-2.1.45-1.fc23.noarch",
                "Installed: httpd-tools-2.4.18-1.fc23.x86_64",
                "Installed: httpd-filesystem-2.4.18-1.fc23.noarch",
                "Installed: apr-1.5.2-2.fc23.x86_64",
                "Installed: fedora-logos-httpd-22.0.0-2.fc23.noarch",
                "Installed: apr-util-1.5.4-2.fc23.x86_64"
            ]
        }
    }
}

TASK: [Auto Start httpd daemon] ***********************************************
changed: [172.16.33.174]

TASK: [debug var=results] *****************************************************
ok: [172.16.33.174] => {
    "var": {
        "results": {
            "changed": true,
            "enabled": true,
            "invocation": {
                "module_args": "name=httpd enabled=yes",
                "module_complex_args": {},
                "module_name": "service"
            },
            "name": "httpd"
        }
    }
}

PLAY RECAP ********************************************************************
172.16.33.174              : ok=4    changed=2    unreachable=0    failed=0
成功したっぽい。インストール先のChildOneSVの方で確認してみる。
# systemctl list-unit-files | grep httpd
httpd.service                               enabled
httpd.socket                                disabled
もちろんhttpdは動いていない。
# ps -aef | grep httpd
root       2162   1195  0 03:07 pts/0    00:00:00 grep --color=auto httpd
 
動かすところまでしとこう。InstallHttpd.ymlをちょっと編集。
---
- hosts: ChildServers
  gather_facts: no
  tasks:
    - name: install httpd by dnf
      dnf: name=httpd state=latest
      register: results
    - debug: var=results
    - name: Auto Start httpd daemon
      service: name=httpd state=started enabled=yes
      register: results
    - debug: var=results
# ansible-playbook InstallHttpd.yml --private-key=~/.ssh/ChildOneSV

PLAY [ChildServers] ***********************************************************

TASK: [install httpd by dnf] **************************************************
changed: [172.16.33.174]

TASK: [debug var=results] *****************************************************
ok: [172.16.33.174] => {
    "var": {
        "results": {
            "changed": true,
            "invocation": {
                "module_args": "name=httpd state=latest",
                "module_complex_args": {},
                "module_name": "dnf"
            },
            "results": [
                "Installed: httpd-2.4.18-1.fc23.x86_64",
                "Installed: mailcap-2.1.45-1.fc23.noarch",
                "Installed: httpd-tools-2.4.18-1.fc23.x86_64",
                "Installed: httpd-filesystem-2.4.18-1.fc23.noarch",
                "Installed: apr-1.5.2-2.fc23.x86_64",
                "Installed: fedora-logos-httpd-22.0.0-2.fc23.noarch",
                "Installed: apr-util-1.5.4-2.fc23.x86_64"
            ]
        }
    }
}

TASK: [Auto Start httpd daemon] ***********************************************
changed: [172.16.33.174]

TASK: [debug var=results] *****************************************************
ok: [172.16.33.174] => {
    "var": {
        "results": {
            "changed": true,
            "enabled": true,
            "invocation": {
                "module_args": "name=httpd state=started enabled=yes",
                "module_complex_args": {},
                "module_name": "service"
            },
            "name": "httpd",
            "state": "started"
        }
    }
}

PLAY RECAP ********************************************************************
172.16.33.174              : ok=4    changed=2    unreachable=0    failed=0
# ps -aef | grep httpd
root       2283      1  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2285   2283  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2286   2283  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2290   2283  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2292   2283  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2294   2283  0 03:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       2297   1195  0 03:13 pts/0    00:00:00 grep --color=auto httpd
できたできた。次の回はconfigの生成(編集?)をやりたいと思います。

0 件のコメント:

コメントを投稿