Учетные данные AWS не принимаются шаблоном AWX

У меня работает новый сервер Ansible AWX, и одна из вещей, которые я ' Я бы хотел создать AMI экземпляров AWS перед установкой регулярных обновлений для экземпляров.

У меня есть playbooks, работающие хорошо в отношении установки обновлений, но я не могу заставить AWX UI правильно проходить Учетные данные AWS с помощью шаблона.

Я запускаю тестовый шаблон, который только создает AMI, и я постоянно выдает сообщение о том, что учетные данные не удалось найти.

В AWX есть раздел учетных данных. Я добавил ключ доступа и секретный ключ пользователя IAM, у которого есть на это права. Несмотря на добавление этих учетных данных в шаблон задания, я получаю следующие выходные данные:

{
    "_ansible_parsed": true,
    "exception": "Traceback (most recent call last):\n  File \"/tmp/ansible_fj8G6M/ansible_module_ec2_ami.py\", line 433, in create_image\n    image_id = connection.create_image(**params).get('ImageId')\n  File \"/usr/lib/python2.7/site-packages/botocore/client.py\", line 320, in _api_call\n    return self._make_api_call(operation_name, kwargs)\n  File \"/usr/lib/python2.7/site-packages/botocore/client.py\", line 610, in _make_api_call\n    operation_model, request_dict)\n  File \"/usr/lib/python2.7/site-packages/botocore/endpoint.py\", line 102, in make_request\n    return self._send_request(request_dict, operation_model)\n  File \"/usr/lib/python2.7/site-packages/botocore/endpoint.py\", line 132, in _send_request\n    request = self.create_request(request_dict, operation_model)\n  File \"/usr/lib/python2.7/site-packages/botocore/endpoint.py\", line 116, in create_request\n    operation_name=operation_model.name)\n  File \"/usr/lib/python2.7/site-packages/botocore/hooks.py\", line 356, in emit\n    return self._emitter.emit(aliased_event_name, **kwargs)\n  File \"/usr/lib/python2.7/site-packages/botocore/hooks.py\", line 228, in emit\n    return self._emit(event_name, kwargs)\n  File \"/usr/lib/python2.7/site-packages/botocore/hooks.py\", line 211, in _emit\n    response = handler(**kwargs)\n  File \"/usr/lib/python2.7/site-packages/botocore/signers.py\", line 90, in handler\n    return self.sign(operation_name, request)\n  File \"/usr/lib/python2.7/site-packages/botocore/signers.py\", line 157, in sign\n    auth.add_auth(request)\n  File \"/usr/lib/python2.7/site-packages/botocore/auth.py\", line 356, in add_auth\n    raise NoCredentialsError\nNoCredentialsError: Unable to locate credentials\n",
    "_ansible_no_log": false,
    "botocore_version": "1.12.16",
    "changed": false,
    "invocation": {
        "module_args": {
            "enhanced_networking": null,
            "purge_tags": false,
            "launch_permissions": null,
            "ramdisk_id": null,
            "no_reboot": false,
            "ec2_url": null,
            "aws_secret_key": null,
            "billing_products": null,
            "state": "present",
            "virtualization_type": "hvm",
            "sriov_net_support": null,
            "architecture": "x86_64",
            "profile": null,
            "image_location": null,
            "description": "",
            "tags": {
                "Name": "i-sdfsdf987987"
            },
            "kernel_id": null,
            "image_id": null,
            "wait_timeout": 900,
            "wait": false,
            "aws_access_key": null,
            "name": "i-sdfsdf987987",
            "security_token": null,
            "delete_snapshot": false,
            "region": "eu-west-2",
            "instance_id": "i-sdfsdf987987",
            "root_device_name": null,
            "validate_certs": true,
            "device_mapping": null
        }
    },
    "msg": "Error registering image: Unable to locate credentials",
    "boto3_version": "1.9.16"

И это моя инструкция:

---
- hosts: all
  remote_user: "{{ remote_user }}"
  become: yes
  tasks:
    - name: create an ami
      ec2_ami:
        instance_id: "{{ instance_id }}"
        name: "{{ instance_id }}"
        region: "{{ aws_region }}"
        tags:
          Name: "{{ instance_id }}"

Если я добавляю учетные данные вручную в качестве переменной на хосте в пользовательском интерфейсе AWX, затем добавляю строки :

aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"

тогда все хорошо. Но это, казалось бы, игнорирует очевидные преимущества использования поддержки хранилища учетных данных AWX.

Сведения о среде:

  • ansible 2.6.4
  • awx version 1.0.7.2
  • ubuntu 18.04.1

Может кто-нибудь видит, что я делаю неправильно?

0
задан 10 October 2018 в 09:15
1 ответ

Итак, в конце концов я настроил учетные данные AWS на каждой машине и сделал это таким образом. Похоже, это должно быть возможно сделать так, как я изначально пытался, но мне нужно, чтобы это работало.

Убедитесь, что на целевой машине установлены инструменты awscli , затем запустите aws configure для добавления учетных данных, региона по умолчанию и, если вам нравится вариант вывода по умолчанию.

Вам также необходимо убедиться, что pip , boto и botocore .

Затем я обновил playbook следующим образом:

---
- hosts: all
  remote_user: "{{ remote_user }}"
  tasks:
    - name: create an ami
      ec2_ami:
        instance_id: "{{ instance_id }}"
        name: "{{ instance_id }}-{{ ansible_date_time.iso8601_basic }}"
        tags:
          Name: "{{ instance_id }}-{{ ansible_date_time.iso8601_basic }}"

Как вы можете видеть, я удалил регион , как указано на каждой машине, и изменил название AMI. Я также удалил стал , потому что конфигурация AWS не выполняется под пользователем root, поэтому наличие этого параметра также вызывает сбой.

0
ответ дан 5 December 2019 в 05:15

Теги

Похожие вопросы