ansible aws ecr войти без использования команды docker

Я хочу войти в реестр aws docker ecr, используя ansible

    # return  docker login -u AWS -p <token> 
   -name: dget docker command
    shell: "aws ecr get-login --region {{ aws_region }}"
    register: docker_login_command
    
   -name: docker login 
    shell: "{{docker_login_command.output}}"
   

для этого потребуется установить docker cli на нашу машину. Но мы используем контейнер docker для запуска ansible с общим сокетом docker. есть ли способ не использовать docker cli для этого?


person monik    schedule 03.09.2020    source источник


Ответы (2)


попробуй это. эта работа для меня.

  - name: ecr docker get-authorization-token
    shell: "aws ecr get-authorization-token  \
    --profile {{ envsettings.infra.aws_profile }} --region {{ envsettings.infra.aws_region }}"
    register: ecr_command
  
  - set_fact:
      ecr_authorization_data: "{{ (ecr_command.stdout | from_json).authorizationData[0] }}"
  
  - set_fact:
      ecr_credentials: "{{ (ecr_authorization_data.authorizationToken | b64decode).split(':') }}"
  
  - name: docker_repository - Log into ECR registry and force re-authorization
    docker_login:
      registry_url: "{{ ecr_authorization_data.proxyEndpoint.rpartition('//')[2] }}"
      username: "{{ ecr_credentials[0] }}"
      password: "{{ ecr_credentials[1] }}"
      reauthorize: yes

для этого требуется модуль docker pip python. установить перед приведенным выше кодом

  - name: install required packages for this role
    pip:
      state: present
      name: docker
      executable: /usr/bin/pip3
person Sunil Shakya    schedule 03.09.2020

Это сработало для меня\о/

- name: "Teili e zaga"
  shell: "{{ item }}"
  with_items:    
   - $(aws ecr get-login --no-include-email --region us-east-1)

психопанте

person psicopante    schedule 21.03.2021