Bash mysql\u安全安装的ansible答案
我不知道如何编写一个任务,它回答了mysql\u secure\u安装脚本的问题 我只有Bash mysql\u安全安装的ansible答案,bash,ansible,Bash,Ansible,我不知道如何编写一个任务,它回答了mysql\u secure\u安装脚本的问题 我只有 shell: mysql_secure_installation <<< '1111' executable=/bin/bash shell:mysql\u secure\u安装我认为您最好的选择是编写一个剧本(或者更好,更改您的mysql角色),该剧本将重现mysql\u secure\u安装脚本。这有几个原因: 每次运行剧本时,脚本都会返回“更改”,这不是您想要的 编写任务更加灵
shell: mysql_secure_installation <<< '1111' executable=/bin/bash
shell:mysql\u secure\u安装我认为您最好的选择是编写一个剧本(或者更好,更改您的mysql角色),该剧本将重现mysql\u secure\u安装
脚本。这有几个原因:
- 每次运行剧本时,脚本都会返回“更改”,这不是您想要的
- 编写任务更加灵活:您可以根据自己的设置添加、删除、更改和调整想要执行的操作
- 你可以在这个过程中学习
基本上,mysql\u secure\u安装
执行以下操作:
设置根密码
删除匿名用户
删除根远程访问
删除测试数据库
假设您已经设置了mysql\u root\u密码,并添加了python mysqldb,如下所示:
- name: Adds Python MySQL support on Debian/Ubuntu
apt: pkg="python-mysqldb" state=present
when: ansible_os_family == 'Debian'
- name: Adds Python MySQL support on RedHat/CentOS
yum: name=MySQL-python state=present
when: ansible_os_family == 'RedHat'
这可以通过以下方式实现:
- 设置根密码
- name: Sets the root password
mysql_user: user=root password="{{ mysql_root_password }}" host=localhost
- 删除匿名用户
- name: Deletes anonymous MySQL server user for ansible_fqdn
mysql_user: user="" host="{{ ansible_fqdn }}" state="absent"
- name: Deletes anonymous MySQL server user for localhost
mysql_user: user="" state="absent"
- 删除根远程访问
- name: Secures the MySQL root user for IPV6 localhost (::1)
mysql_user: user="root" password="{{ mysql_root_password }}" host="::1"
- name: Secures the MySQL root user for IPV4 localhost (127.0.0.1)
mysql_user: user="root" password="{{ mysql_root_password }}" host="127.0.0.1"
- name: Secures the MySQL root user for localhost domain (localhost)
mysql_user: user="root" password="{{ mysql_root_password }}" host="localhost"
- name: Secures the MySQL root user for server_hostname domain
mysql_user: user="root" password="{{ mysql_root_password }}" host="{{ ansible_fqdn }}"
- 删除测试数据库
- name: Removes the MySQL test database
mysql_db: db=test state=absent
这应该可以做到。注意,我快速浏览了一下系统上的mysql\u secure\u安装。我可能跳过了某些内容,或者其他版本中可能包含其他步骤。YMMV 这就是我的工作原理:
- name: Adds Python MySQL support on Debian/Ubuntu
apt: pkg="python-mysqldb" state=present
when: ansible_os_family == 'Debian'
- name: Adds Python MySQL support on RedHat/CentOS
yum: name=MySQL-python state=present
when: ansible_os_family == 'RedHat'
- name: Set the root password
mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}"
- name: Secure the root user for IPV6 localhost (::1)
mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="::1"
- name: Secure the root user for IPV4 localhost (127.0.0.1)
mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="127.0.0.1"
- name: Secure the root user for localhost domain
mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="localhost"
- name: Secure the root user for server_hostname domain
mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="{{ ansible_fqdn }}"
- name: Deletes anonymous server user
mysql_user: login_user=root login_password="{{ root_password }}" user="" host_all=yes state=absent
- name: Removes the test database
mysql_db: login_user=root login_password="{{ root_password }}" db=test state=absent
看看这个Ansible模块,它为Ansible中的mysql\u secure\u安装提供了一种简单且幂等的方法
示例-使用全新的MySQL安装
-名称:测试mysql\u安全\u安装
mysql\u安全\u安装:
登录\u密码:“”
新密码:password22
用户:root
登录主机:localhost
主机:['localhost',127.0.0.1','::1']
更改\u root\u密码:true
删除\u匿名\u用户:true
不允许\u根用户\u远程登录\u:true
删除测试数据库:true
注册:mysql\u secure
#查看详细输出
-调试:
var:mysql\u安全
示例-更改现有根密码
-名称:测试mysql\u安全\u安装
mysql\u安全\u安装:
登录密码:password22
新密码:password23
用户:root
登录主机:localhost
主机:['localhost',127.0.0.1','::1']
用法:您只需在剧本或角色目录中创建一个名为库
的目录
,并将mysql\u secure\u installation.py
复制到其中
您可以在下面的链接中找到完整的示例
如果没有“state=缺席”,那么那些删除根远程访问的命令实际上不会确保您拥有根远程访问权限吗?没有。这样做是为了确保root只能连接本地计算机。不是来自任何其他机器,例如远程。对我来说,这不起作用。我必须更改行以将根密码设置为:-name:设置根密码mysql\u user:login\u user=root login\u password=”“user=root password=“{{root\u password}}”#使用空白密码登录,然后设置密码
唯一的问题是,它不是幂等的。您可以通过添加一行删除任何旧的mysql数据,在将密码从空白设置为其他内容之前基本上清除mariadb或mysql,从而使该操作成为幂等的。