From 3ac32672152ec298ced16beee293df4cf7a1b844 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Mon, 27 Jul 2020 23:32:55 +0800 Subject: [PATCH] Add back setting environment variable (#3549) Co-authored-by: Joe Lanford --- changelog/fragments/ansible-operator-env.yaml | 9 +++++++ cmd/ansible-operator/main.go | 26 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 changelog/fragments/ansible-operator-env.yaml diff --git a/changelog/fragments/ansible-operator-env.yaml b/changelog/fragments/ansible-operator-env.yaml new file mode 100644 index 0000000000..26ffaf3123 --- /dev/null +++ b/changelog/fragments/ansible-operator-env.yaml @@ -0,0 +1,9 @@ +entries: + - description: > + Fixed a bug that caused the Ansible operator not to set the environment + variables `ANSIBLE_ROLES_PATH` and `ANSIBLE_COLLECTIONS_PATH` based on the + flags `--ansible-roles-path` and `--ansible-collections-path` + + kind: bugfix + + breaking: false diff --git a/cmd/ansible-operator/main.go b/cmd/ansible-operator/main.go index 1c462194d9..ea3fe013d8 100644 --- a/cmd/ansible-operator/main.go +++ b/cmd/ansible-operator/main.go @@ -123,6 +123,12 @@ func main() { options.Namespace = metav1.NamespaceAll } + err = setAnsibleEnvVars(f) + if err != nil { + log.Error(err, "Failed to set environment variable.") + os.Exit(1) + } + // Create a new manager to provide shared dependencies and start components mgr, err := manager.New(cfg, options) if err != nil { @@ -220,3 +226,23 @@ func getAnsibleDebugLog() bool { } return val } + +// setAnsibleEnvVars will set environment variables based on CLI flags +func setAnsibleEnvVars(f *flags.Flags) error { + if len(f.AnsibleRolesPath) > 0 { + if err := os.Setenv(flags.AnsibleRolesPathEnvVar, f.AnsibleRolesPath); err != nil { + return fmt.Errorf("failed to set environment variable %s: %v", flags.AnsibleRolesPathEnvVar, err) + } + log.Info("Set the environment variable", "envVar", flags.AnsibleRolesPathEnvVar, + "value", f.AnsibleRolesPath) + } + + if len(f.AnsibleCollectionsPath) > 0 { + if err := os.Setenv(flags.AnsibleCollectionsPathEnvVar, f.AnsibleCollectionsPath); err != nil { + return fmt.Errorf("failed to set environment variable %s: %v", flags.AnsibleCollectionsPathEnvVar, err) + } + log.Info("Set the environment variable", "envVar", flags.AnsibleCollectionsPathEnvVar, + "value", f.AnsibleCollectionsPath) + } + return nil +}