インフラCIをやりたい-part1

やってみたい好奇心が優先された
何Partで終わるやら…

準備するもの

流石にネットの散乱した情報じゃ絶対に迷子になるだろうことが容易に想像できたので友人から↓の書籍を借りる

インフラCI実践ガイド Ansible/GitLabを使ったインフラ改善サイクルの実現

技術要素

要素 ガイド本 その他一例
ダイナミック
インフラストラクチャ
Vagrant OpenStack
GCP
Azure
構成管理ツール Ansible Chef
Terraform
バージョン管理 GitLab GitHub
CIツール GitLab CI
GitLab Runner
Circle CI
Jenkins
サーバ構成テストツール Ansible Serverspec
InSpec
issue
チケット管理
GitLab RedMine
レビューシステム GitLab GitHub

環境構築

OSのインストール

書籍該当バージョンのCentOS7でインスタンスを立てる
※マイナーは気にしなくていいとのこと

項目 選択
OS CentOS 7
インスタンスタイプ t2.large
ストレージ:ルート 55GB
セキュリティグループ
インバウンド
SSH
マイIP:22
タグ:Name CI-test

インスタンスのステータスチェックが2/2で完了したらssh接続
Centosの場合のログイン時ユーザに気付くのに若干時間取られた

AWSコンソールで対象インスタンスの[ご利用方法]タブにssh方法が記載されている f:id:hedgehogweeklyreport:20181221151321p:plain

ssh -i <pem鍵> centos@パブリックDNS

f:id:hedgehogweeklyreport:20181221151028p:plain

sshdの起動と有効化
systemctl start sshd
systemctl enable sshd
GitとAnsibleのインストール

curlコマンドを使用して書籍指定のファイルをDL
その後インストールシェルの実行に再起動

curl -o <ファイル名> -L https://なんちゃらかんちゃら
sh ./setup.sh
reboot

curl
-o:指定したURLをそのままファイルとしてダウンロード
-L:リダイレクトも追う

バージョン確認

git --version
ansible --version

f:id:hedgehogweeklyreport:20181221152941p:plain

VirtualBox/Vagrantインストール

ガイド本のgitリポジトリを利用してAnsibleのプレイブックを実行

コケてるんで調査 f:id:hedgehogweeklyreport:20181221155328p:plain

調べた感じだと、実行したPlayBookは同じディレクトリにある他のPlayBookをImportする内容の模様
そのImport-PlayBookの中のDiscCheck.yml的なところでコケてる現状
中身は↓

---
- name: Check available disk space
  gather_facts: True
  hosts: "vagrant"
  become: True
  roles:
    - diskspace

name→任意の文字列
gather_facts: True→ホストのハード情報を収集する
hosts: "vagrant"→hosts ファイルで指定したグループ名(存在確認済み)
become: True→PlayBookをroot権限で実行
roles:(diskspace)モジュールの読み込み

rolesはrolesディレクトリ配下にある切り分けられたymlを読み込む役割と一旦認識

調べたところ>roles>diskspace配下に2つのymlファイルがあり、これらを読み込んでいたっぽい

ひとつはハード情報を収集して50GB以上あるかをCheckしているっぽい

もうひとつのymlファイルの中にコケていたTaskを発見

- name: Check the virt type
  assert:
    that:
      - ('vmx' in cpuinfo_contents.stdout) or
        ('svm' in cpuinfo_contents.stdout)
    msg: "CPU has to support Intel VT-x or AMD-V"
  when:
    - check_cpuinfo

CPU has to support Intel VT-x or AMD-Vに着目してググる

要はEC2(仮想サーバ)の中に仮想環境を構築という所謂仮想化の入れ子状態になるから仮想化支援機能を有効化しろというCheckTaskらしい そしてAWSでだとちょっと厳しそう?

AWSってまっさらなベアメタルで使えないのだろうか? → Amazon EC2 I3 インスタンス – ハイ I/O コンピューティングインスタンス
高過ぎて笑える。個人ユースでは無理

端末のVirtualBoxCentOSを入れ直すか悩み中