Awx-operator: awx 部署但从不创建用户

创建于 2020-11-11  ·  12评论  ·  资料来源: ansible/awx-operator

来自 git 的 awx 运算符 (f4b619a185ac0cb5736b229c61e56ed91237d16a)
awx 15.0.1
Kubernetes 1.18.8 (AKS)

如果我创建了一个 awxs 资源,操作员会创建 postgres 数据库和 awx pod,但任务容器似乎没有为数据库做种(即使在允许几个小时后,我仍然收到如下错误:

2020-11-11 09:38:10,649 WARNING  awx.main.dispatch.periodic periodic beat started
Traceback (most recent call last):
  File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: column main_instance.ip_address does not exist
LINE 1: SELECT (1) AS "a" FROM "main_instance" WHERE ("main_instance...

如果我进入任务容器并手动运行 migrate,它会说没有待处理的迁移,并且它可以连接到数据库。

bash-4.4$ awx-manage migrate
Operations to perform:
  Apply all migrations: auth, conf, contenttypes, main, oauth2_provider, sessions, sites, social_django, sso, taggit
Running migrations:
  No migrations to apply.
bash-4.4$ awx-manage check_db
Database Version: PostgreSQL 10.14 (Debian 10.14-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit

我在任务容器日志中没有看到任何关于迁移的错误(而且很少)。

有趣的是,这个相同的配置以前对我有用,但我看不到在哪里解决它。

最有用的评论

初始反馈 - 0.6.0 README 说使用来自 devel 分支的部署清单。 看起来清单自从 0.6.0 被标记(新的 apiVersion 和其他东西)以来已经发生了很大的变化。

使用 0.6.0 清单和 0.6.0 README确实让我得到了一个工作 awx 实例,但我知道密码!

devel README 是 github 中的默认视图,它讨论了秘密创建,但 0.6.0 没有。 也许应该有某种注释以确保人们使用一组匹配的自述文件、清单和 git branch :-) 很确定这就是@BonzTM在上面看到的。

所有12条评论

我注意到的一件事是任务容器出现在数据库之前。 启动脚本是否足够智能以等待?

NAME                   READY   STATUS              RESTARTS   AGE
awx-69bf447555-9gr92   3/3     Running             0          20s
awx-postgres-0         0/1     ContainerCreating   0          27s

现在对事物的顺序有了更多的了解,我可以看到实际上数据库确实是由操作员创建的,但是在过程结束时,auth_user 表是空的。 我在我的 awx 对象中定义了 Tower_admin_user 和 Tower_admin_password。

我能找到的唯一提到的 Tower_admin_user 是在 roles/tasks/initialize.yml 中,它看起来像是 _used_ 被包含在 main.yml 中,但由于这个“lint 清理”而不再存在: https :

再次取消对 include 行的注释后,我得到了一个用户! 但只是有时。 在尝试运行迁移之前,操作员似乎实际上并没有等待或检查数据库是否可用:

django.db.utils.OperationalError: could not translate host name \"awx-postgres\" to address: Name or service not known"

为了确保 postgres 已经真正启动,我在接近末尾的role/awx-operator/main.yml添加了一个附加任务,在“检查数据库是否已填充”之前:

- name: Verify database is available
  community.kubernetes.k8s_exec:
     namespace: "{{ meta.namespace }}"
     pod: "{{ tower_pod_name }}"
     container: "{{ meta.name }}-task"
     command: >-
       bash -c "awx-manage check_db"
  register: database_avail_check
  retries: 60
  delay: 5
  ignore_errors: true
  until: "'Database Version' in database_avail_check.stdout"

@howardjones你在最新版本中仍然面临这个问题吗?

我还没有尝试过 0.6 - 我目前正在使用我自己的“0.55”版本。 我很快就会测试,这样我就可以停止管理自己的分叉了!

你好,
我有同样的问题,我没有创建管理员用户,无论是否定义了 Tower_admin_user 和 Tower_admin_password。 我在 0.6 上测试过。

感谢您的评论。

  1. 你介意分享一个我可以申请复制的spec文件吗?

  2. kubectl logs -f deployments/awx-operator -n <yournamespace>提供什么作为以下任务的输出: https :

注意:在devel (不适用于0.6.0tower_admin_password值不再使用,为了正确创建 Addmin 用户帐户,可以参考自述文件https:/ /github.com/ansible/awx-operator#admin -user-account-configuration

我也是,无法在 0.60 中获得身份验证。 没有为我创建任何秘密,并且手动创建秘密、 tower_admin_passwordtower_admin_password_secret也不会让我进入。

日志显示用户任务的初始化运行,但没有输出。

我没有登录数据库来进一步排除故障。 我刚刚结束执行任务容器并通过 cli 创建第二个超级用户。

echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin2', '[email protected]', 'longpassword')" | awx-manage shell

初始反馈 - 0.6.0 README 说使用来自 devel 分支的部署清单。 看起来清单自从 0.6.0 被标记(新的 apiVersion 和其他东西)以来已经发生了很大的变化。

使用 0.6.0 清单和 0.6.0 README确实让我得到了一个工作 awx 实例,但我知道密码!

devel README 是 github 中的默认视图,它讨论了秘密创建,但 0.6.0 没有。 也许应该有某种注释以确保人们使用一组匹配的自述文件、清单和 git branch :-) 很确定这就是@BonzTM在上面看到的。

@howardjones是的,其他社区成员也被它咬到了。

计划是解决https://github.com/ansible/awx-operator/issues/124 ,所以至少,提供的清单应该始终相同(并指向与devel匹配的实际正确运算符) - 这样这种不匹配就不应该再发生了。

我将在解决根本问题后关闭此问题,并尝试解决上述问题。 感谢您报告最初的问题!

此页面是否有帮助?
0 / 5 - 0 等级