您可以使用以下的解决方案:
在您的Ansible Playbook中,您可以使用一个特殊的模块——raw
来执行原始命令而不对其进行过多的处理。 例如:
- name: Run AWS CLI command
raw: aws ssm send-command --document-name "AWS-RunShellScript" --targets "{{ target_instance_id }}" --parameters '{"commands":["sudo yum install -y httpd"]}' --region us-east-1 --output text --query "Command.CommandId" >> commandId.txt'
在上面的示例中,我们使用了raw
模块来执行AWS CLI命令,我们可以看到在--parameters
参数中我们使用了双引号。这可以确保AWS CLI命令可以正常工作。
另外一个解决方法是在使用单引号的字符串中加上转义字符\
来表示包含单引号。例如:
- name: Run AWS CLI command
shell: 'aws ec2 start-instances --instance-ids "{{ instance_id }}"'
在上面的示例中,我们使用了单引号来定义字符串,但我们在字符串中使用了双引号。我们可以在双引号前添加转义字符\
,以便在字符串中包含双引号。