目次

AWS CodeBuildを使って、Ansibleをサーバレスで実行する



CodeBuildでAnsibleで実現できること

注意点


シークレットマネージャーにSSHの秘密鍵を登録する


Ansibleのソースコードとbuildspec.ymlの準備

.   
├── ansible 
│ ├── inventory.ini 
│ ├── roles 
│ │ └── common  
│ │ └── tasks   
│ │ └── main.yml    
│ └── site.yml  
└── buildspec.yml


buildspec.yml

version: 0.2

phases:
  install: 
    commands:
      # SSH接続時のホストキーチェックを無効にする
      - sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config
      # EC2の秘密鍵をAWS Secrets Managerから取得し、.sshディレクトリに保存
      - aws secretsmanager get-secret-value --secret-id ec2-privatekey --query 'SecretBinary' --output text | base64 -d > ~/.ssh/id_rsa
      # 秘密鍵のパーミッションを設定
      - chmod 400 ~/.ssh/id_rsa

  pre_build: 
    commands:
      - cd ${CODEBUILD_SRC_DIR}/ansible

  build: 
    commands:
      # Ansibleプレイブックを実行
      - ansible-playbook -i inventory.ini site.yml -u ec2-user -v
Ubuntu
---
version: 0.2

phases:
  pre_build:
    commands:
      - sudo apt-get update -y
      - sudo apt-get install software-properties-common -y
      - sudo apt-add-repository ppa:ansible/ansible -y
      - sudo apt-get update -y
      - sudo apt-get install ansible -y
      - sudo apt-get install openssh-client -y
      - cd ./playbook
      - chmod 600 ./ssh-keys/sw-iwamoto.pem
      - ansible -i hosts/inventory.yml -m ping all
  build:
    commands:
      - ansible-playbook -i hosts/inventory.yml ./setup.yml
  post_build:
    commands:
      - echo "Now Finished Privisioning by Ansible"


ビルドプロジェクトの作成

プロジェクト名 ansible-test1
ソース ソースプロバイダ:CodeCommit
リポジトリ:ansible-test1
リファレンスタイプ:ブランチ
ブランチ :main
環境 プロビジョニングモデル:オンデマンド
環境イメージ :マネージド型イメージ
オペレーティングシステム :Amazon Linux 2
ランタイム :Standard
イメージ :aws/codebuild/amazonlinux2-x86_64-standard:4.0
イメージのバージョン :最新のイメージ
環境タイプ :Linux
サービスロール:既存のサービスロール
(CodeCommitへの読み取りが可能なポリシーが必要)
タイムアウト:30分
キュータイムアウト:1時間
特権付与:有効
証明書:証明書をインストールしない
VPC:
サブネット:
セキュリティグループ:


参考