使用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_*。

    1. Cloud9以容器的方式为用户提供开发环境。

 

    1. 在外部进行SSH / http连接时,要经过NAT。

 

    1. 当使用ansible的ec2_*命令时,会通过SSH连接到本地主机并执行awscli命令。

 

    1. Cloud9无法从外部进行SSH连接。

 

    1. 由于无法通过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地址:

广告
将在 10 秒后关闭
bannerAds