В Kubernetes в initContainer я выполняю следующую команду для замены двух значений, взятых из переменных env:
initContainers:
- name: init-atsconfigs
image: busybox
command: ['sh', '-c', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -i "s/_AWS_ACCESS_KEY_OVERRIDE_/$AWS_ACCESS_KEY/g" /etc/trafficserver_edit/*.config', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -i "s/_AWS_ACCESS_SECRET_KEY_OVERRIDE_/$AWS_ACCESS_SECRET_KEY/g" /etc/trafficserver_edit/*.config']
Файл /etc/trafficserver_edit/s3_auth_v4.config
выглядит так:
access_key=_AWS_ACCESS_KEY_OVERRIDE_
secret_key=_AWS_ACCESS_SECRET_KEY_OVERRIDE_
version=4
v4-region-map=region_map.config
К сожалению, первая команда sed обнуляет второе значение в исходном файле, оставляя его пустым:
access_key=AKIA....
secret_key=
version=4
v4-region-map=region_map.config
Как должна выглядеть команда sed для предотвращения этого?
edit: все неудачные попытки:
command: ['sh', '-c', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -e "s/_AWS_ACCESS_KEY_OVERRIDE_/$AWS_ACCESS_KEY/g" ; sed -e "s/_AWS_SECRET_KEY_OVERRIDE_/$AWS_ACCESS_SECRET_KEY/g" /etc/trafficserver_edit/*.config']
command: ['sh', '-c', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -i "s/_AWS_ACCESS_KEY_OVERRIDE_/$AWS_ACCESS_KEY/g" /etc/trafficserver_edit/*.config', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -i "s/_AWS_SECRET_KEY_OVERRIDE_/$AWS_ACCESS_SECRET_KEY/g" /etc/trafficserver_edit/*.config']
command: ['sh', '-c', 'cd /tmp/ats && for i in $(ls *.config); do cat $i > /etc/trafficserver_edit/$i; done; sed -i "s/_AWS_ACCESS_KEY_OVERRIDE_/$AWS_ACCESS_KEY/g;s/_AWS_ACCESS_SECRET_KEY_OVERRIDE_/$AWS_ACCESS_SECRET_KEY/g" /etc/trafficserver_edit/*.config
подробнее ..