我正在使用Apache气流的Helm图并使用createUserJob
部分创建一个用户:
airflow:
createUserJob:
command: ~
args:
- "bash"
- "-c"
- |-
exec \
airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "users create" "create_user" }} "$@"
- --
- "-r"
- "{{ .Values.webserver.defaultUser.role }}"
- "-u"
- "{{ .Values.webserver.defaultUser.username }}"
- "-e"
- "{{ .Values.webserver.defaultUser.email }}"
- "-f"
- "{{ .Values.webserver.defaultUser.firstName }}"
- "-l"
- "{{ .Values.webserver.defaultUser.lastName }}"
- "-p"
- "{{ .Values.webserver.defaultUser.password }}"
但是,如果存在,我想在创建用户之前删除该用户,但以下内容无法工作:
airflow:
createUserJob:
command: ~
args:
- "bash"
- "-c"
- |-
exec \
airflow users delete --username admin ;
airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "users create" "create_user" }} "$@"
- --
- "-r"
- "{{ .Values.webserver.defaultUser.role }}"
- "-u"
- "{{ .Values.webserver.defaultUser.username }}"
- "-e"
- "{{ .Values.webserver.defaultUser.email }}"
- "-f"
- "{{ .Values.webserver.defaultUser.firstName }}"
- "-l"
- "{{ .Values.webserver.defaultUser.lastName }}"
- "-p"
- "{{ .Values.webserver.defaultUser.password }}"
有办法在这里运行多个命令吗?
发布于 2022-06-07 16:10:56
删除单词exec
。
这里显示的语法将bash -c 'command' args
作为主容器命令运行,其中args
是在命令中展开的参数列表,如$0
、$1
、$2
等。在命令字符串中,"$@"
扩展到从$1
开始的那些位置参数。这是正确的设置。
在命令字符串中,exec
是一个特殊内置公用设施:exec some_command
将当前的shell替换为some_command
,并且实际上结束了当前脚本。在容器上下文中,这对于控制哪个进程是主容器进程很有用,但是在这个短暂的脚本中,这并不是特别必要的。特别是,如果要使用exec
命令,那么它必须是最后一个命令。
我可以把它的结构安排为:
command:
- /bin/sh
- -c
- |-
airflow users delete --username "{{ .Values.webserver.defaultUser.username }}";
airflow users create "$@"
# (no `exec` in this command string)
- --
args:
- "-r"
- "{{ .Values.webserver.defaultUser.role }}"
- "-et"
- cetera
在这里,command:
/args:
拆分是一种人为的,但它使命令词是如何划分的稍微清楚了一些。
https://stackoverflow.com/questions/72531825
复制相似问题