- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 Ansible 为 MariaDB/MySQL 数据库设置随机(32 个字母数字)根密码并将其保存到 ~/.my.cnf
文件中(以允许命令查找这个密码)?
它应该只配置一次,如果剧本运行多次,则不应每次都更改密码。
This使用变量中的密码。
如果我使用它,它会在每次运行剧本时更改密码:(并且无法保存密码 - 如果剧本在此任务后中断,密码就会丢失)
- name: "Change database root user password"
mysql_user:
name: root
password: "{{ lookup('password','/dev/null chars=ascii_letters,digits length=32') }}"
host: "{{ item }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
state: present
when: mysql_root_result.stat.exists == False
with_items:
- localhost
- "::1"
- 127.0.0.1
最佳答案
一些假设:
'root'@'localhost'
足以覆盖 root 用户以及其他本地root用户需要删除~/.my.cnf
扩展到/root/.my.cnf
~/.my.cnf
获取(所有普通工具都可以,只要它们以正确的用户身份运行即可,在本例中为 root
)概述:
~/.my.cnf.new
(确保它在设置之前在服务器上可用。这允许在中断时进行(手动)恢复)mv
's functionality in two tasks - 硬链接(hard link)并删除)( link
和 unlink
)'root'@'127.0.0.1'
, 'root'@'::1'
, 'root'@'<hostname>'
(使用一些事实来确保满足大多数可能性)密码配置模板:(相对于角色目录的“templates/my_passwd.cnf.j2”)
[client]
user={{ item.user }}
password={{ item.password }}
任务:
# MariaDB: Set up secure root password
# Set up (and save) secure root password
# Check for /root/.my.cnf
# All the other things are skipped if this file already exists
- name: "Check if we already have a root password config"
stat:
path: /root/.my.cnf
register: mysql_root_result
# Generate password
# This uses https://docs.ansible.com/ansible/latest/plugins/lookup/password.html
# to generate a 32 character random alphanumeric password
- name: "Generate database root password if needed"
set_fact:
mysql_root_passwd: "{{ lookup('password','/dev/null chars=ascii_letters,digits length=32') }}"
when: mysql_root_result.stat.exists == False
# Generate /root/.my.cnf.new
# A temporary file is used to keep it from breaking further commands
# It also ensures that the password is on the server if the critical
# parts are interrupted
- name: "Save new root password in temporary file"
template:
src: my_passwd.cnf.j2
dest: /root/.my.cnf.new
owner: root
group: root
mode: 0400
when: mysql_root_result.stat.exists == False
with_items:
- user: root
password: "{{ mysql_root_passwd }}"
# START of area that you don't want to interrupt
# If this is interrupted after the first task
# it can be fixed by manually running this on the server
# mv /root/.my.cnf.new /root/.my.cnf
# If the playbook is reran before that. The password would be lost!
# Add DB user
- name: "Add database root user"
mysql_user:
name: root
password: "{{ mysql_root_passwd }}"
host: "{{ item }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
state: present
when: mysql_root_result.stat.exists == False
with_items:
- localhost
# Now move the config in place
- name: "Rename config with root password to correct name - Step 1 - link"
file:
state: hard
src: /root/.my.cnf.new
dest: /root/.my.cnf
force: yes
when: mysql_root_result.stat.exists == False
# END of area that you don't want to interrupt
# Interrupting before this task will leave a temporary file around
# Everything will work as it should though
- name: "Rename config with root password to correct name - Step 2 - unlink"
file:
state: absent
path: /root/.my.cnf.new
when: mysql_root_result.stat.exists == False
# Remove additional root users - these don't have the password set
# You might want to ensure that none of these variables are `localhost`
# All return somewhat different values on my test system
- name: "Clean up additional root users"
mysql_user:
name: root
host: "{{ item }}"
check_implicit_admin: yes
state: absent
with_items:
- "::1"
- 127.0.0.1
- "{{ ansible_fqdn }}"
- "{{ inventory_hostname }}"
- "{{ ansible_hostname }}"
关于mysql - 如何使用 Ansible 为 MySQL/MariaDB root 用户设置并保存随 secret 码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563845/
我正在尝试在我的 minikube 上启动并运行 keycloak。 我正在安装keycloak helm upgrade -i -f kubernetes/keycloak/values.yaml
我将我的数据库密码存储到AWS密钥管理器的Secret Value字段中。如果我使用以下代码,如何检索密码值?。在密钥管理器中定义的密钥:密钥在密钥管理器中定义的值:DBPwd。当我写入日志文件时,上
I am storing my database password into the Secret value field in the aws secret manager. How do I
我正在尝试在 AWS CDK 上组合一个相对简单的堆栈,其中涉及来自 aws-ecs-patterns 的 ApplicationLoadBalancedFargateService。 我的问题涉及
今天我在悠闲地阅读时偶然发现了 Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryp
不是一个真正的编程问题,但很想知道 Kubernetes 或 Minikube 如何管理 secret 并在多个节点/pod 上使用它? 假设我创建了一个 secret 来使用 kubectl 提取图
我需要从 AWS dynamoDB 和第三方 https 服务中获取元素并将这些结果合并到 AWS appSyn 中并将结果作为 graphQL 响应发回 我正在使用的第三方服务需要客户端证书。我没有
我收到一个错误: gpg: no default secret key: No secret key gpg: [stdin]: clearsign failed: No secret key GPG
我正在尝试为 kubernetes 集群设置私有(private) docker 镜像注册表。我正在关注 link $ cat ~/.docker/config.json | base64 ew
当我开发一个API服务器时,我需要给API服务器一些账户信息,这些信息不应该给任何人看。K8s对这种情况推荐secret,所以我用了。 但我想知道这个 secret 是否真的是 secret 。 se
在大多数有关在 Kubernetes 中使用 secret 的示例中,您都可以找到类似的示例: apiVersion: v1 kind: Secret metadata: name: mysecr
我正在与 terraform 合作,在 azure 中启动不同的资源。其中一些资源包含敏感数据,我希望将其安全地存储在 aws Secret Manager 中。这在 Terraform 中是可行的过
我有带有有效 key 的 Azure 应用程序注册。 我正在尝试使用 v1.0 获取 token ,如下所示(clientId 是上述应用程序注册的 ID) $body = @{ grant_
本文讨论如何安装 secret 卷。 https://learn.microsoft.com/en-us/azure/container-instances/container-instances-v
我正在使用 kubernetes 将 Rails 应用程序部署到谷歌容器引擎。 遵循 kubernetes secret 文档:http://kubernetes.io/v1.1/docs/user-
我正在与 terraform 合作,在 azure 中启动不同的资源。其中一些资源包含敏感数据,我希望将其安全地存储在 aws Secret Manager 中。这在 Terraform 中是可行的过
我有带有有效 key 的 Azure 应用程序注册。 我正在尝试使用 v1.0 获取 token ,如下所示(clientId 是上述应用程序注册的 ID) $body = @{ grant_
本文讨论如何安装 secret 卷。 https://learn.microsoft.com/en-us/azure/container-instances/container-instances-v
我有一个 python 脚本,它在 AWS 中创建一些访问 key 并将它们存储在 secret 管理器中。 但是,当我存储 key 时,我收到一条错误消息: The secret value can
我在 Secrets Manager 控制台上创建了一个 key 。然后我尝试使用 Go 代码 quickstart guide喜欢 ctx := context.Background() clien
我是一名优秀的程序员,十分优秀!