代码之家  ›  专栏  ›  技术社区  ›  user181452

向文件添加行的命令的cloud init runcmd syntx

  •  0
  • user181452  · 技术社区  · 6 年前

    我正在尝试执行这个简单的命令,但它总是失败:

     echo "secret_backend_command: /home/ec2-user/dd-get-secrets.py" >> /etc/datadog-agent/datadog.yaml"
    

    我尝试了以下所有方法:

            - [ sh, -c, echo "secret_backend_command: /home/ec2-user/dd-get-secrets.py" >> /etc/datadog-agent/datadog.yaml ]
    
            - 'sh -c "echo \"secret_backend_command: /home/ec2-user/dd-get-secrets.py\" >> /etc/datadog-agent/datadog.yaml"'
    
            - sh -c "echo 'secret_backend_command: /home/ec2-user/dd-get-secrets.py' >> /etc/datadog-agent/datadog.yaml
    

    你知道如何修复这个报价吗?

    注意,我用另一个文件而不是datadpg.yaml测试,因为我 对此项获取权限被拒绝。

    我发现的例子 here 没有工作

    1 回复  |  直到 6 年前
        1
  •  0
  •   user181452    6 年前

    我改变了执行的方式,没有将它放在runcmds的yaml列表中,而是创建了一个脚本,并将此命令放入runcmds中并调用该脚本。通过这样做,我摆脱了对cloud init中“:”和引号的复杂处理。

      UserData:
        'Fn::Base64': !Sub |
          #cloud-config
          write_files:
            - path: /home/ec2-user/update-datadog-config.sh
              permissions: 0744
              owner: root
              content: |
                #!/usr/bin/env bash
                set -e
                echo "secret_backend_command: /home/ec2-user/dd-get-secrets.py" >> /etc/datadog-agent/datadog.yaml
          runcmd:
            - bash /home/ec2-user/update-datadog-config.sh