Cloud-init runcmd syntx команды, добавляющей строку в файл - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь выполнить эту простую команду, но она продолжает давать сбой:

 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, потому что я получаю разрешение на отказ в этом.

примеров, которые я нашел в здесь didnне работает

1 Ответ

0 голосов
/ 13 декабря 2018

Я изменил способ сделать это, и вместо того, чтобы поместить его в список yaml в runcmds, я создал скрипт, вместо этого поместил эту команду внутрь и вызвал скрипт в 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
...