ansible - 稳定 | bash 脚本的变量声明
问题描述
我有一个 bash 脚本,在该脚本下files
需要一个从 default\main1.yml 传递的变量。我怎样才能声明相同?
roles
config
defaults
main1.yml
files
script.sh
tasks
main2.yml
默认值\main1.yml
log_group_name: "{{ lookup('env','LOG_GROUP') }}"
脚本.sh
for NAME in $(ls -1p /home/ec2-user/ |grep -v "^_" | grep -v "/$" |cut -d. -f1);
do
if ! grep $NAME /etc/awslogs/awslogs.conf;
then
sudo tee -a /etc/awslogs/awslogs.conf << END
[$DAGNAME]
datetime_format = %b %d %H:%M:%S
file = /var/log/airflow/$NAME/*/*/*.log
buffer_duration = 5000
log_stream_name = $NAME
initial_position = start_of_file
log_group_name = ${log_group_name}
END
fi
done
sudo service awslogsd start
sudo systemctl enable awslogsd
任务/cloud.yml
---
- name: 'Cloud | AWSlogs.conf file'
when: inventory_hostname == 'master'
script: ../files/cloud.sh
- name: 'Cloud | AWSlogs.conf file'
when: inventory_hostname == 'worker_1'
script: ../files/cloud.sh
ansible 命令执行播放:- deploy.py
execute(['sudo', '-E', 'ansible-playbook', 'ansible/plays/deploy.yml', '-i', 'hosts.yml'],
stdout=sys.stdout, stderr=sys.stderr, env=aug_env)
解决方案
您需要在脚本的执行环境中设置变量,但它显然已经存在,因为您将其从 ENV 中拉出,因此您甚至不需要这样做。如果你这样做了,你可以通过 Ansible 模板模块安装脚本并以这种方式执行脚本。
https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html
推荐阅读
- typescript - TypeScript - 从通用联合类型缩小类型
- php - 无法在 PHPmailer 中使用单选按钮
- r - loadNamespace中的Error是什么意思
- google-api - 使用服务帐户为所有用户创建谷歌文档
- c# - C# SQL Server 存储过程未返回预期值
- ios - 在添加和删除第二个按钮时保持 SwiftUI 中的导航项按钮对齐
- google-cloud-platform - 使用 gsutil CLI 4.51 时如何为 gslib 设置 USER_AGENT?
- python - 有没有办法使用 python 从数据框中填充本体?
- azure - 如何在 azure blob 存储中设置“Content-Disposition:附件”标头?
- android - 如何获取 firebase 存储的下载 url 和更新 firestore 文档?