createUserJob运行多个命令



我正在使用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 }}"

是否有办法在这里运行多个命令?

去掉exec这个词

您在这里展示的语法将bash -c 'command' args作为主容器命令运行,其中args是在命令中扩展为$0$1$2等的参数列表。在命令字符串中,"$@"展开为从$1开始的位置参数。设置正确

在命令字符串中,exec是一个特殊的内置实用程序:exec some_commandsome_command替换当前shell,并且实际上结束了当前脚本。在容器上下文中,这对于控制哪个进程是主容器进程很有用,但在这个短时间脚本中,这不是特别必要的。特别是如果你要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:分割是人为的,但它使命令字的分割稍微清晰一些。

相关内容

  • 没有找到相关文章

最新更新