Eu tenho uma instância do EC2 que estou implantando na AWS.
Estou usando um Amazon Linux 2 e estou passando dados de usuário para ele da seguinte forma:
userdata_file.write(
f'''
#!/bin/bash\n
export PAGERDUTYAPIKEY='mykey'\n
sudo yum install git -y\n
chmod +x ./basic_test.sh \n
echo $PAGERDUTYAPIKEY> /home/ec2-user/pagerdutyapikey1.txt\n
sudo ./basic_test.sh
'''.strip()
)
basic_test.sh
#!/bin/bash
echo "s/enterpagerdutyapikey/${PAGERDUTYAPIKEY}/g" > path.txt
No entanto, quando eu executo, no path.txt
está ecoando como tal:
s/enterpagerdutyapikey//g
Mas quando eu ssh no servidor e executo o mesmo script bash, ele ecoa assim:
s/enterpagerdutyapikey/mykey/g
Alguma idéia de por que a variável de ambiente $PAGERDUTYAPIKEY
está renderizando vazio quando executo o userdata?
Postando da postagem do StackOverflow https://stackoverflow.com/questions/70423727/environment-variable-empty-in-bash-script
Conforme respondido por @chepner, o sudo não preserva variáveis de ambiente arbitrárias por padrão por motivos de segurança. Então, largar o sudo do comando me ajudou.