MENU
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
AWSの構築・クラウド運用を総合支援【CapsuleCloud】
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
AWSの構築・クラウド運用を総合支援【CapsuleCloud】
  • ホーム
  • AWSマネージドサービス
    • AWS運用サポート
    • AWSコンサルティング
    • コンテナ導入支援『仁』
  • AWS導入支援
  • WordPress
    • WordPress脆弱性対策
    • WordPress高速化
    • 高速WordPressサーバ『翔』
  • 導入事例
  • Q&A
  • お問い合わせ
  1. ホーム
  2. AWS
  3. AWSのためのAnsible入門

AWSのためのAnsible入門

2022 8/04
AWS
2022年8月4日
目次

はじめに

構成管理ツールはChefが有名ですが、よりシンプルで使いやすいAnsibleの基本的な使い方をご紹介していきます。
高機能なChefと比較すると、Ansibleは非常にシンプルです。
そもそも複雑なことはTerraformなどより適したツールで行い、サーバ・インスタンス単位のプロビジョニングはAnsibleで行う、という役割を持たせると管理しやすいと思います。

Ansibleとは

Ansibleは、IBMの子会社であるRed Hat, Inc.により開発されました。
設定した任意の内容に従い、ソフトウェアのインストールやパッチの適用、タスクの自動化にいたるまで、様々なITプロセスの自動化が可能なオープンソースの構成管理ツールです。

Ansibleの特徴として

エージェントレス

ChefやPuppetのようにサーバ側にエージェントをインストールすることなく、SSHが繋がる環境であればOKという手軽さです。

YAMLで記述

サーバの定義を記述したPlaybookは、YAML形式で記述していくのでプログラムに詳しくない人でも簡単に使うことができます。
その反面、複雑なことをしようとするとPlaybookがシェルスクリプトで埋まり、Ansibleの良さは失われるかもしれません。

冪等性

Ansibleは、「この処理を実行せよ」ではなく「この状態であることを保証せよ」という思想で作られているので、Playbookが同じであれば何度実行しても同じ結果になります(commandなど一部のモジュールは除く)。

以上の特徴があります。
そして、Ansibleが構成管理ツールとして便利なのはなにより、インフラのチーム共有が可能という点です。

my.cnfはこのバージョンではこの記述を入れておく、apacheはこのモジュール設定を入れておく、rubyはrbenvでどうするなど…インフラの知識や設定は属人化しやすい傾向にあります。チーム内の誰かに「サーバ建てておいて」と頼んでみたところで、その人が調べながら構築した内容をチェックするのも大変な作業です。しかも、だいたい間違っていたりします。

Ansibleならそうした設定ファイルが管理できる為、Ansibleプロジェクトをgitで管理してチームで共有、serverspecなどのテストツールと合わせてCI経由で本番環境に適用といったDevOpsが可能です。

また、Ansibleのウェブサイトにも、

Ansible is designed around the way people work and the way people work together.

と記述されています。
チームで使いやすいサーバ構成管理ツールとしてのスタンスで開発されているのだと思います。

AWSでAnsible

早速、Ansibleをインストールしていきましょう。
ローカルのMacにはPython 2.7.13が入っているので、pipインストールします。

$ pip install ansible

これでAnsibleが使えるようになったので、シンプルにEC2インスタンスを建ててみましょう。
hostsとsite.ymlの2つのファイルを作成します。

■ hosts

127.0.0.1

■ site.yml

- hosts: localhost
gather_facts: no
connection: local
tasks:
- name: Create ec2 instanse
ec2:
key_name: mypemkey
instance_type: t2.micro
image: ami-bbf2f9dc
monitoring: no
wait: yes
region: ap-northeast-1
group_id: sg-12345678
vpc_subnet_id: subnet-9876543
assign_public_ip: yes
instance_tags:
Name: ansible-sample1
register: ec2

AWS環境をAnsibleで構成する際には、hostsをlocalhostと記述します。そして、tasksにec2の設定内容が書いてあります。
今回はvpcのサブネットや、セキュリティグループ、キーペアなどは予め作成してあります。

YAML形式なので見たままですが、key_nameでキーペア、instance_typeで今回作成するインスタンスのスペック、imageでは使用するAMI、group_idでセキュリティグループ、などを指定しています。

■ シンタックスチェック

$ ansible-playbook -i hosts site.yml --syntax-check
playbook: site.yml

■ Dry run

$ ansible-playbook -i hosts site.yml -C
PLAY [localhost] ***

TASK [Create ec2 instanse] *
skipping: [127.0.0.1]

PLAY RECAP ***
127.0.0.1 : ok=0 changed=0 unreachable=0 failed=0

■ 実行

$ ansible-playbook -i hosts site.yml
PLAY [localhost] ***

TASK [Create ec2 instanse] *
changed: [127.0.0.1]

PLAY RECAP ***
127.0.0.1 : ok=1 changed=1 unreachable=0 failed=0

これだけでEC2インスタンスが立ち上がります。

もしPythonのエラーが出る場合は、interpreterのパスを指定してあげましょう。

■ hosts

127.0.0.1 ansible_python_interpreter=/Users/me/.pyenv/shims/python

AWS クレデンシャル

構成管理ツールは、EC2インスタンスの起動はもちろん停止なども出来るので、会社のAWSアカウントや本番アカウントにいきなり作ってしまうと万が一の際にトラブルになります。
社内用のアカウントに切り替えて実行したい時には、使用するクレデンシャル情報を指定することで対応できます。

予めAWSの認証情報からAWS Access Key IDとAWS Secret Access Keyを取得して、

$ aws configure --profile mysecond

でローカル環境に設定しておきます。

Playbookの実行時に

$ AWS_PROFILE=mysecond ansible-playbook -i hosts site.yml

とすれば、AWS_PROFILEで指定したAWSアカウントで接続できます。

AWS

関連記事

  • aws-route53
    AWS機能を網羅してみよう3.3 Route53編「実践」DNSフェイルオーバー
  • AWSのクラウドセキュリティ「責任共有モデル」とは?
  • aws-s3
    Amazon S3でGlacierを活用したコスト削減法
  • aws-route53
    AWS機能を網羅してみよう3.2 Route53編「実践」
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
  • aws-route53
    AWS機能を網羅してみよう3.1 Route53編「概要」
  • aws-waf
    AWS WAFでSQLインジェクションと特定URLをブロック
  • aws-vpc
    AWSネットワーク設計 VPC概論
人気記事
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
  • terraform
    Terraformと変数(variable)のお話
新着記事
  • 10分でスタート!AWSの利用開始までを解説
  • WordPress脆弱性の原因とやっておくべき7つの対策
  • WordPress高速化!6つの簡単な方法で重さを改善
  • 高速WordPressサーバ『翔』
  • 【実例20選】AWS導入企業、活用事例をご紹介
カテゴリー
  • AWS
  • AWS導入支援
  • Rancher
  • Terraform
  • WordPress
アーカイブ
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
開発案件多数! フリーランス・エンジニアの求人はテックブレイン

スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。

スーパーソフトウエアはRancherパートナーネットワークのコンサルティングパートナーです。

logo

カプセルクラウドはAWSクラウドのマネージドサービスです。AWSを安心かつ迅速に導入し、負荷分散・セキュリティ・DevOps・コスト削減など、クラウドサービスのメリットを活かした豊富なベストプラクティスをご提供いたします。

Contents

  • サービス
  • 導入支援
  • WordPress
  • 導入事例
  • ブログ
  • Q&A
  • お問い合せ

お問い合わせ

株式会社スーパーソフトウエア
東京 03-6721-7105
大阪 06-4707-6001
info-capsulecloud@tokyo.supersoftware.co.jp

  • プライバシーポリシー
  • 免責事項
  • 契約約款
  • 特商法に基づく表記
  • 会社情報
  • サイトマップ

© Supersoftware 2017. All rights reserved.

目次