Contents
Ansible Linklight で使う環境をAWSに展開した時のメモです。
基本的にドキュメント通りにやっています。
事前に必要なもの
- AWSのアカウント
- Cisco Cloud Services Router(CSR) 1000V – BYOL for Maximum Performance で
Subscribe
してあること - Route 53でドメインを取得(任意)
- TECHNICAL WORKSHOPSページ を作成する場合は必要
.com
だと$13/年
位
環境
項目 | バージョン | 備考 |
---|---|---|
RHEL | 7.6 | Ansible操作端末 |
Python | 2.7.5 | |
Ansible | 2.7.10 |
provision & teardown
事前準備
AWSアクセス用のキーファイル作成
AWSアカウントの accessキー
と secret accessキー
を以下のファイルに記述します。
1 2 3 4 5 6 |
[root@ansible ~]# mkdir ~/.aws [root@ansible ~]# vi ~/.aws/credentials [default] aws_access_key_id = アクセスキー aws_secret_access_key = シークレットアクセスキー |
リポジトリクローン
リポジトリをクローンします。
1 2 |
[root@ansible aws]# git clone https://github.com/network-automation/linklight.git |
必要なモジュールのインストール
virtualenvを作って必要なモジュールをインストールします。
1 2 3 4 |
[root@ansible aws]# virtualenv venv [root@ansible aws]# source venv/bin/activate (venv) [root@ansible aws]# pip install passlib netaddr boto boto3 ansible selinux |
Extra Vars作成
展開に必要な変数を定義します。
ここではネットワークの学習環境をAWSに展開するために以下のように定義しました。
1 2 3 4 5 6 7 8 9 |
(venv) [root@ansible aws]# vi extra_vars.yml ec2_region: ap-northeast-1 ec2_name_prefix: TESTWORKSHOP1 student_total: 1 admin_password: ansible create_login_page: true networking: true workshop_dns_zone: Route 53で取得したドメイン |
変数名 | 説明 |
---|---|
ec2_region | リージョンを指定します、ここでは東京リージョンを指定しています |
ec2_name_prefix | Nameタグに設定するprefixを指定します |
student_total | 展開する環境の数を指定します |
admin_password | Ansibleコントロールノードのパスワードを指定します |
create_login_page | TECHNICAL WORKSHOPSのページを作成するか指定します、作成する場合はRoute 53に登録したドメインにレコードが登録されます |
networking | 学習環境をネットワークモードにする場合は true を指定します |
workshop_dns_zone | Route 53で取得したドメインを指定します |
各変数の詳細は以下を参照ください。
AWSに学習環境を展開
AWS上にネットワークの学習環境を展開します。
1 2 |
(venv) [root@ansible aws]# ansible-playbook linklight/provisioner/provision_lab.yml -e @extra_vars.yml |
途中なんどかSSH接続について確認があるので yes
と入力します。
1 2 |
Are you sure you want to continue connecting (yes/no)? yes |
問題なく実行が完了すると以下のようにインスタンスが作成されています。
作成された秘密鍵は以下に保存されます。
1 2 |
/root/aws/linklight/provisioner/TESTWORKSHOP1/TESTWORKSHOP1-private.pem |
これを使ってansibleノードにログインします。
1 2 |
(venv)[root@ansible aws]# ssh ec2-user@パブリックIP/DNS -i /root/aws/linklight/provisioner/TESTWORKSHOP1/TESTWORKSHOP1-private.pem |
ちなみに、Ansible Towerを自動でインストールしてライセンスを埋め込むこともできますが、ライセンスの埋め込みも自動にする場合は以下のパスに保存する必要があります。
1 2 |
linklight/provisioner/tower_license.json |
AWSから学習環境を削除
AWSから学習環境を削除する場合は以下のコマンドを実行します。
1 2 |
(venv) [root@ansible aws]# ansible-playbook linklight/provisioner/teardown_lab.yml -e @extra_vars.yml |