使用Ansible在AWS EC2上简单安装并重新启动Go语言
前提条件
-
- Cloud9でansibleを動かしたい。
-
- すでにEC2インスタンスを作成してある。
IPアドレス割り当て済み
キーペアが設定済み
ansible 2.4.1.0
我想要做的事情
-
- ansibleのPlaybookをシンプルに書きたい。(→2ファイルになりました)
- 次のコマンドをAWS EC2 インスタンスにssh接続して、下記のコマンドを実行したい。
$ sudo yum update
$ sudo yum groupinstall -y "Development Tools"
$ sudo yum groupinstall -y "Development Libraries"
$ sudo yum install golang
$ sudo shutdown -r now
创建的东西 de
库存文件
将EC2分配的IP地址和指定的密钥文件(.pem)写入清单文件中。
[ec2servers]
54.249.xxx.xxx ansible_ssh_private_key_file=~/.ssh/aws-ssh.pem
剧本
---
- hosts: ec2servers
name: ec2 first setup
user: ec2-user
sudo: yes
gather_facts: true
tasks:
- name: yum update
yum:
name: '*'
state: latest
- name: yum groupinstall "Development Tools"
yum:
name: "@Development tools"
state: latest
- name: yum groupinstall "Development Libraries"
yum:
name: "@Development Libraries"
state: latest
- name: yum install golang
yum:
name: 'golang'
state: latest
- name: reboot
command: shutdown -r now
- name: wait connection
wait_for_connection:
delay: 10
timeout: 180
执行
$ ansible-playbook -i hosts ec2setup.yml
对所迷恋的事物进行解析
用Ansible指定SSH密钥(密钥文件)进行身份验证的方法是什么?
将ansible_ssh_private_key_file和密钥文件写入与连接目标主机相同行的清单文件中。无论是连接到AWS EC2的ssh连接,还是在不注册连接信息到~/.ssh/config的情况下,都可以使用此选项来为每个主机指定密钥文件。
[ec2servers]
54.249.xxx.xxx ansible_ssh_private_key_file=~/.ssh/aws-ssh.pem
当您进行SSH连接时,需要输入的用户名是什么?
指定登录Playbook的用户名。
user: ec2-user
我想每次都用sudo执行命令。
在Playbook中添加sudo
sudo: yes
为什么不使用ansible的ec2_*模块?
(1) 本次执行的主机环境是Cloud9.
-
- どこからでもブラウザ開いて、コードをかける
- shell実行ができる
因为这是适合ansible的!所以我试了试。
(2) 在Cloud9上安装Ansible2.4
$ sudo apt install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt update
$ sudo apt install ansible
- ※ ansibleリポジトリを追加しないで、sudo apt updateしてsudo apt install ansibleするとansible 1.5.4が追加される上に各種ライブラリの更新がかかってCloud9のdisk容量を600MBくらい消費するので、ちょっとツライ。
(3) 我尝试使用Ansible通过Cloud9操作ec2_*。
-
- Cloud9以容器的方式为用户提供开发环境。
-
- 在外部进行SSH / http连接时,要经过NAT。
-
- 当使用ansible的ec2_*命令时,会通过SSH连接到本地主机并执行awscli命令。
-
- Cloud9无法从外部进行SSH连接。
-
- 由于无法通过SSH连接到本地主机,因此在使用ansible的ec2_*命令时执行会失败。
- \(^o^)/
-
- もしかして、Cloud9にsshdをインストールして~とやればlocalhostにssh接続できるようになるのかもしれないけど、試せてません。
- ansibleからec2インスタンスを作成や削除の作業をしなければ、ec2_*モジュールを使わずにもどうにかなる。
查找在从Cloud9外部连接时的连接源(Cloud9侧)的IP地址的方法。
(To native Chinese speakers, please feel free to suggest alternate paraphrases as well.)
在SSH连接之前,需要事先检查并将连接源IP地址注册到安全组的入站规则中,否则无法进行连接。
$ curl ifconfig.co
104.155.xxx.xx
请参考以下方法了解您的IP地址: