Команда AWS CLI работает внутри сервера ansible, но выдает ошибку в башне ansible

#ansible #aws-cli #aws-ssm

Вопрос:

Я пытаюсь выполнить команду ниже.

 - name: Update patch-baseline  command: gt;  aws ssm update-patch-baseline --baseline-id "pb-038faee968a" --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=SEVERITY,Values=[Critical,Important,Moderate]},{Key=CLASSIFICATION,Values=[Security]}]},ApproveUntilDate=2021-12-31}]" --profile temp --region us-east-1  environment:  AWS_SHARED_CREDENTIALS_FILE: "{{ temp.path }}"  delegate_to: awx04.local  remote_user: ec2-user  

Это приводит меня к ошибке ниже, но когда я запускаю эту команду в AWS CLI непосредственно на сервере, она работает отлично. есть какие-нибудь идеи?

Ошибка проверки параметров: Отсутствует требуемый параметр в Правилах утверждения.PatchRules[0]: Неизвестный параметр «ApproveAfterDays» в правилах утверждения.PatchRules[0]: «Дата утверждения», должно быть одним из следующих: PatchFilterGroup, уровень соответствия, Дни утверждения, EnableNonSecurity

Комментарии:

1. Я бы предположил, что это связано с тем, что версия awscli отличается, поскольку (AFAIK) она использует файлы JSON на диске для проверки этих полезных нагрузок; может быть, попробуйте aws --version посмотреть, что она сообщает

2. aws-cli/1.19.51 Python/3.6.8 Linux/4.18.0-305.19.1.el8_4.x86_64 ботокор/1.20.51 но этот сервер может запускать мою команду с помощью интерфейса командной строки, почему бы и нет, когда мы бежим из ansible tower на этот сервер.

3. Вы неправильно поняли, я имел в виду, чтобы ваш игровой сборник выполнил эту команду и сравнил ее с тем, что вы получаете «на сервере». Единственная правдоподобная причина, по которой один awscli будет работать с этой командой, а не с другой, заключается в том, что они являются разными установками, но просто запускаются aws молча, выбирая первую версию на PATH