MENU
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
  1. ホーム
  2. AWS技術知見
  3. AWSのためのAnsible入門

AWSのためのAnsible入門

2022 9/16
AWS技術知見
2022年9月16日
目次

はじめに

構成管理ツールは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概論
検索
clouddx003-low.pdf - 1.8MB
資料ダウンロードはこちら
人気記事
  • terraform
    Terraformと変数(variable)のお話
    Terraform
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
    AWS技術知見
  • 【実例20選】AWS導入企業、活用事例をご紹介
    AWS導入支援
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
    AWS導入支援
  • ansible
    AWSのためのAnsible入門
    AWS技術知見
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
  • aws-inspector
    [AWS入門] Amazon Inspectorでセキュリティチェックを行う
    AWS技術知見
新着記事
  • AWS運用代行企業5選!企業選びのポイントを解説
    AWS運用代行
  • AWS運用代行のサービス内容やメリットについて
    AWS運用代行
  • 10分でスタート!AWSの利用開始までを解説
    AWS導入支援
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
カテゴリー
  • AWS導入支援
  • AWS技術知見
    • Rancher
    • Terraform
  • AWS運用代行
  • WordPress
タグ一覧
AI (3) aws (25) aws-cli (3) CloudFormation (1) CloudSearch (3) DeepLearning (1) DNS (2) Docker (4) EBS最適化オプション (1) ec2 (7) ElasticBeanstalk (1) Geo Routing (1) Gitlab (1) HA (1) infrastructure-as-code (1) keypair (1) load-balancer (1) nginx (2) OpenAM (3) Rancher (8) Rekognition (2) Route53 (3) s3 (2) secrets (1) security-group (1) Terraform (6) terragrunt (2) tfvars (1) variable (1) vault (1) VPC (1) wordpress (3) アプリケーション (1) オンプレミス (2) クラウド (2) サインアップ (1) シングルサインオン (3) セキュリティ (1) セキュリティグループ (1) ネットワーク設計 (1) 人工知能 (2) 初心者 (1) 本番運用 (1) 画像認識 (3) 起動 (1)
アーカイブ
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
AWSエンジニア積極採用!
採用情報
フリーランスの求人情報!
テックブレイン

スーパーソフトウエアは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.

目次