Установка AWS CLI
Требования к системе:
- Python 2 version 2.6.5+ or Python 3 version 3.3+
Проверить что в системе установлен python
1 |
rpm -qa | grep python |
Скачаем AWS CLI Bundler
1 |
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" |
Распакуем
1 |
unzip awscli-bundle.zip |
Установим
1 |
./awscli-bundle/install -i /usr/local/aws -b /usr/bin/aws |
Ключи:
— i — каталог установки
-b — расположение bin файла для AWS CLI
Проверим успешно ли все утисновлено:
1 |
/usr/local/bin/aws --version or aws help |
Настройка AWS CLI
Прежде чем начать настройку AWS CLI необходимо создать «AWS Access Key ID» и «AWS Secret Access Key«. Данные ключи можно создать в AWS Management console в разделе «Security Credentials» or «Identity and Access Management» (IAM).
- Слева выбираем Users
- Нажимаем Add User
- Введите имя пользователя в текстовое поле рядом с User name: (в этом примере будем использовать имя AWS_Admin) и выберите Programmatic access в разделе «Select AWS Access Type»; Щелкните кнопку Next: Permissions.
- Нажимаем на Attach existing policies directly. Выбераем AdministratorAccess, затем Next: Review.
- Жмем кнопку Create user.
- Видим нужные нам данные, скопируем их:
AWS Access Key = Your Account Access Key
AWS Secret Access Key = Your Account Secret Access Key
Вернемся в нашу систему, запустим интерфейс настройки с помощью команды:
1 |
aws configure |
После ввода данных, проверим, что конфигурационные файлы созданы:
1 |
cd ~/; pwd; ll |
Ansible role для настройки AWS-CLI автоматически
1 2 3 4 5 6 7 8 9 |
. ├── tasks │ ├── aws.yml │ └── main.yml ├── templates │ ├── aws_cli_config.j2 │ └── aws_cli_credentials.j2 └── vars └── main.yml |
./tasks/aws.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
--- - name: 'Install Python PIP' tags: 'aws-cli' become: 'yes' yum: > pkg=python-pip state=latest - name: 'Install AWS CLI' tags: 'aws-cli' become: 'yes' pip: > name=awscli state=latest - name: Set home directory of the user set_fact: home_dir: /home/{{ aws_cli_user }} when: "not aws_cli_user == 'root'" - name: Set home directory for root set_fact: home_dir: /root when: "aws_cli_user == 'root'" - name: 'Create the AWS config directory' tags: 'aws-cli' become: 'yes' file: > path={{ home_dir }}/.aws state=directory owner={{ aws_cli_user }} group={{ aws_cli_group }} mode=0755 - name: 'Copy AWS CLI config' tags: 'aws-cli' become: 'yes' template: > src=aws_cli_config.j2 dest={{ home_dir }}/.aws/config owner={{ aws_cli_user }} group={{ aws_cli_group }} mode=0600 - name: 'Copy AWS CLI credentials' tags: 'aws-cli' become: 'yes' template: > src=aws_cli_credentials.j2 dest={{ home_dir }}/.aws/credentials owner={{ aws_cli_user }} group={{ aws_cli_group }} mode=0600 |
./tasks/main.yml
1 2 |
--- - include: aws.yml |
./templates/aws_cli_config.j2
1 2 3 |
[default] output = {{ aws_output_format }} region = {{ aws_region }} |
./templates/aws_cli_credentials.j2
1 2 3 |
[default] aws_access_key_id = {{ aws_access_key_id }} aws_secret_access_key = {{ aws_secret_access_key }} |
./vars/main.yml
1 2 3 4 5 6 7 8 |
--- home_dir: /root aws_cli_user: 'root' aws_cli_group: 'root' aws_output_format: 'json' aws_region: 'eu-west-1' aws_access_key_id: 'AK**************VQ' aws_secret_access_key: 'n7J1K+b*****************************t' |
Остановимся на файле (./vars/main.yml) с переменными более детально. Когда файл с паролями и ключами хранится в репозитории или ином ином публичном хранилище это не сильно безопасно.
Поэтому предлагаю восспользоваться ansible-vault для того, чтобы зашифровать файл.
Как это сделать рассмотрим в следующей статье.