【AWS】我尝试使用ansible来自动化繁琐的任务

这是2022年12月21日,关于Digital Cube & Heptagon Advent Calendar的帖子。

 

因为在工作中有过几次接触的机会,所以我打算借此机会学习一下Ansible。

ansible是一种自动化工具。

Ansible是一种用于自动化和优化系统配置和软件安装等的配置管理工具。由Red Hat公司开发和销售,并作为开源软件公开发布。

    Ansible

使用Ansible可以自动化以前繁琐的手动操作,带来以下优点。

    • チーム共有が可能

 

    • 同じ環境を作れる

 

    • 修正が簡単

 

    コーヒーを飲む時間ができる

相似的服務

如果您对Chef、Puppet等服务感兴趣,可以通过以下链接进行了解。(据说由于其独特的语言,管理起来很困难)

    • Chef

 

    Puppet

引入环境

本次的作業將在下列環境下進行。

[local]
- MacBook Air 2019 (intel)
- macOS Ventura 13.0.1
- brew 3.6.15
- ansible 2.13.6

[server]
- Amazon Linux 2
- t3.micro
- EIP関連付け済み(52.69.34.67)

如果您的设备上没有安装 brew,请按照下面的步骤进行安装。

預先準備

可以使用Ansible的话,我们需要准备本地环境。
如果使用brew的话,可以简单地进行安装。

[local]
# ansibleをインストール
brew install ansible

# バージョン確認
ansible --version
ansible [core 2.13.6]

当你被这样责备的时候,请安装错误下面所写的内容,并重新安装ansible。

# エラー内容
Error: python@3.11: the bottle needs the Apple Command Line Tools to be installed.

You can install them, if desired, with:
    xcode-select --install

# xcode-selectをインストール
xcode-select --install

# ansibleをインストール
brew install ansible

# バージョン確認
ansible --version
ansible [core 2.13.6]

初始设置

我会在任意的地方创建一个目录。

# 任意の場所にディレクトリを作る
mkdir /hoge/ansible
cd /hoge/ansible

之後,將設置設定檔案。
構成如下。

<プロジェクトディレクトリ>
└── ansible
    ├── hosts
    ├── site.yaml
    ├── ansible.cfg
    └── index.html
[aws]
52.69.34.67
# 対象の指定(インベントリファイルで指定した名前)
- hosts: aws

  # 管理者権限で実行
  become: true

  # 以下に実際の操作を記述
  tasks:

    # パッケージの更新
    - name: yum updated
      yum:
        name: "*"
        state: latest
    
    # タイムゾーンの変更
    - name: set timezone to Asia/Tokyo
      community.general.timezone:
        name: Asia/Tokyo
      become: yes

    # httpdのインストール
    - name: httpd installed
      yum:
        name: httpd
        state: installed
      become: yes

    # httpdの起動・自動起動設定
    - name: httpd start and automatic startup setting
      service:
        name: httpd
        state: started
        enabled: yes
      become: yes

    # リポジトリの有効化
    - name: enable to install php7.4
      shell: "amazon-linux-extras enable php7.4"
      changed_when: False

    # phpのインストール
    - name: php7.4 installed
      yum:
        name: php
        enablerepo: amzn2extra-php7.4
        state: present

    # index.htmlファイルを対象に配置
    - name: index.html deployed
      template:
        src: ./index.html
        dest: /var/www/html/index.html
        mode: 0644
[defaults]
remote_user = ec2-user
private_key_file = ~/.ssh/hogehoge.pem
host_key_checking = false
retry_files_enabled = false
inventory = ./hosts
interpreter_python = auto

[privilege_escalation]
become = true
ansible

试一试

# 設定に問題がないかチェック
ansible-playbook -i hosts site.yaml --syntax-check

# 実行
ansible-playbook site.yaml
ansible-playbook site.yaml

PLAY [aws] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [52.69.34.67]

TASK [yum updated] *************************************************************
ok: [52.69.34.67]

TASK [set timezone to Asia/Tokyo] **********************************************
ok: [52.69.34.67]

TASK [httpd installed] *********************************************************
ok: [52.69.34.67]

TASK [httpd start and automatic startup setting] *******************************
ok: [52.69.34.67]

TASK [enable to install php7.4] ************************************************
ok: [52.69.34.67]

TASK [php7.4 installed] ********************************************************
ok: [52.69.34.67]

TASK [index.html deployed] *****************************************************
changed: [52.69.34.67]

PLAY RECAP *********************************************************************
52.69.34.67                : ok=8    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
スクリーンショット 2022-12-21 2.47.27.png
# date
Wed Dec 21 02:48:20 JST 2022

# httpd -v
Server version: Apache/2.4.54 ()
Server built:   Jun 30 2022 11:02:23

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Active: active (running) since Wed 2022-12-21 02:37:06 JST; 11min ago

# php -v
PHP 7.4.33 (cli) (built: Nov 19 2022 00:22:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

我对此有所感受。

初始的学习成本可能会有些高,但如果是相同的结构,一旦记住了,就能很容易地在其他环境中复用。这次只是基本操作,但以后还想更深入地探索一下,像是通过使用详细的设定周围或角色来整理playbook。

以下为参考:

请用中文进行原生的改写,只需要一个选项:

请提供以下参考 :

    • Ansible

 

    • Chef

 

    Puppet
广告
将在 10 秒后关闭
bannerAds