LoginSignup
2
2

More than 5 years have passed since last update.

FUJITSU Cloud Service for OSS (旧K5)をAnsibleで操作する (2)

Posted at

はじめに

前回の投稿をRoleを使って書き直し、可能な限り汎用化しました。

playbookファイルは githubに置いています。

※事前準備等は前回のページを参照してください。

インスタンスを起動してWPを導入するサンプル

できるだけ色々なケースに使いまわせるように、role化しています。
ハードコードをできるだけ避け、メインのplaybookもしくは、varsで変数を与えて実行したいという考えで作成しました。

$ git clone https://github.com/dokuyama/ansible_fujitsu_K5.git

またはzip等でダウンロードして、ansibleを実行するマシンで展開してください。

clouds.yml.sample、single-web-WP_vars.yml.sample は環境に合わせてリネーム後編集してください。

編集後、

$ ansible-playbook single-web-WP.yml

で実行します。うまく成功すれば、Wordpressのデフォルトのページが表示できるようになります。

実行している内容

role単位で簡単に説明します。

  • ansible-ssh-key
    SSHの鍵を作成します。既に ./id_rsa_ansible, ./id_rsa_ansible.pub が存在すればそのファイルをimportします。
    (一度作ったら上書きはしません)

  • openstack-create-basic-network
    ネットワーク、サブネット、ルータの作成後、SSHのキーペアを登録します。

  • openstack-security-group/get_my_global_ip
    ansibleを実行しているマシンのアクセス元になるglobal IPアドレスを取得します。

  • { role: openstack-security-group/create, security_group_name: ["web", "mng"] }
    web,mng という名前でセキュリティグループを作成します。

  • openstack-security-group/add-rule
    セキュリティグループにルールを追加します。
    追加するルールは single-web-WP_vars.yml に以下のように記載しています。
    ※ipify_public_ip は前のタスクで取得したglobal IPが入ります。

##
## openstack-security-group/add-rule vars
##
security_group_rules:
  - { name: "http", security_group: "web", protocol: "tcp", port_range_min: "80", port_range_max: "80", remote_ip_prefix: "0.0.0.0/0" }
  - { name: "https", security_group: "web", protocol: "tcp", port_range_min: "443", port_range_max: "443", remote_ip_prefix: "0.0.0.0/0" }
  - { name: "ssh", security_group: "mng", protocol: "tcp", port_range_min: "22", port_range_max: "22", remote_ip_prefix: "{{ ipify_public_ip }}/32" }
  • { role: openstack-create-instance, server_lists: ["single-web-WP"], security_group: ["default", "web", "mng"], auto_ip: yes, volume_size: "35", volume_image: "CentOS 7.3 64bit (English) 01", server_flavor: "P3-1", group: "webservers" }
    引数に沿ってインスタンスを作成します。
    このroleを並べる事で複数台作成する事もできます。

  • check-ssh-port
    SSHがつながるようになるのを待ちます。
    ※waitの秒数が長いのは、SSHのportが開いてからauthorized_keysに登録されるまで、少々遅延があるためです。

  • { role: yum/update-all, reboot: yes }
    インストール済みのrpmを全てyum update でアップデートします。
    updateする対象のrpmが存在し、reboot がyesの場合、実行後OSの再起動を行います。

  • { role: yum/install, install_packages_lists: ["httpd", "php", "php-mysql", "mariadb-server", "MySQL-python"] }
    引数に従ってyumでパッケージをインストールします。

  • { role: php/change-timezone, timezone: "'Asia/Tokyo'" }
    phpのタイムゾーンを設定します。

  • { role: service/enable, service_name: ["httpd", "mariadb"] }
    サービスの自動起動を有効にします。

  • { role: service/restart, service_name: ["httpd", "mariadb"] }
    サービスの再起動を実行します。

  • wordpress/create-database
    Wordpress用のデータベースを作成します。

  • wordpress/install
    Wordpressのインストールを行います。
    インストール済みの場合、ファイルの存在をチェックし、スキップされます。
    wp-cliを使っています。

  • wordpress/update
    wp-cliを使ってWordpressのアップデートを行います。

  • name: print message
    最後に、導入したWordpressが表示できるURLを表示します。

今後の予定

Ansibleのアップデートが必要のようですが、loadbalancerの追加、Snapshotの取得等、もっとOpenStackの操作ができるようにしたいと思います。
前回発見したAnsibleの問題が修正されているか確認して、未解決の場合はAnsibleを複数切り替えるという記事も見かけたので、そういった方向も試してみたいと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2