程序员开发实例大全宝库

网站首页 > 编程文章 正文

使用Ansible安装MySQL(ansible安装kubernetes)

zazugpt 2024-10-23 16:54:38 编程文章 29 ℃ 0 评论

使用Ansible安装MySQL

我们现在有一个可以管理常见项目的Ansible Playbook。 它可以安装和配置Nginx,最后也可以安装和配置Tomcat。 下一个合乎逻辑的步骤是安装某种形式的数据存储,为此,我们将看看MySQL。

由于其相对易用性和开源传统,MySQL可以说是最受欢迎的数据库之一。 MySQL对于大小网站都足够强大,并为互联网上许多最受欢迎的网站提供支持。 虽然它可能缺少一些企业功能,它们是比较昂贵的堂兄弟,例如Oracle和Microsoft SQL,但它可以通过相对简单的安装和无需许可证成本进行扩展来弥补这一点。

做好准备

对于此配方,您需要一个Ubuntu 14.04服务器作为您的Ansible客户端,以及一个您希望为MySQL配置的Ubuntu 14.04服务器。

怎么做…

让我们使用Ansible安装MySQL:

  • 与之前的食谱一样,我们将在我们的剧本中创建一个新角色。 导航到tasks文件夹并发出以下命令:
$ ansible-galaxy init mysql --force
  • 这将创建我们的新角色和底层文件夹结构。
  • 我们将从安装MySQL的软件包开始。 在MySQL角色的tasks文件夹下创建一个名为install_packages.yml的新文件,并插入以下代码:
- name: 'Install MySQL packages'
 apt: name={{ item }} state=latest
 with_items:
 - python-dev
 - libmysqlclient-dev
 - python-pip
 - mysql-server
- pip: name=MySQL-python
  • 这里有几件事情。 首先,除了MySQL本身,我们还要安装一些其他软件包。 这是为了支持Ansible MySQL模块,并允许我们使用pip包管理器来安装另一个必备软件包。
  • 现在我们已经安装了MySQL,我们可以配置它。 首先,首先更改root用户的密码; 默认情况下,它设置为空。 在tasks目录中创建名为configure_mysql.yml的文件,并插入以下代码段:
- name: Set root password mysql_user: name=root host={{ item }} password={{ mysql_root_password }}
 with_items:
 - "{{ ansible_hostname }}"
 - 127.0.0.1
 - ::1
 - localhost
  • 请记住,通过在文件底部添加以下内容,将此任务添加到main.yml文件中:
- configure_mysql.yml
  • 这里有两件事需要注意。 首先,我们迭代主机列表。 这可以确保root用户的密码在其可能存在的所有各种排列中更改。其次,我们使用变量来包含root密码。 请注意在with_items列表中使用{{ansible_hostname}}。 这使用从目标主机收集的详细信息来填充某些保留变量; 这对于诸如此类的情况非常有用.

TIP

您可以在http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts找到有关Ansible事实的更多详细信息。

  • 接下来,我们将创建一个.my.cnf文件。 这是一个便捷文件,允许您插入MySQL客户端可以使用的某些选项,并节省您在命令行键入的工作量。 通常,这用于保存击键,但在这种情况下,它用于确保当Ansible第二次运行时,它可以使用我们设置的密码访问数据库。 使用此代码段创建.my.cnf文件:
- name: Create .my.cnf file
 template: src=my.cnf.j2 dest=/root/.my.cnf owner=root 
mode=0644
  • 正如您所注意到的,这使用模板来创建文件。 通过在MySQL角色的templates目录下创建名为my.cnf.j2的新文件来创建模板,并插入以下代码:
[client]
user=root
password={{ mysql_root_password }}
  • 通常,我们会在group_vars / dev目录下创建一个文件来保存MySQL root密码变量,这样就行了。 但是,由于这是敏感信息,我们希望确保随意窥探的眼睛不会偶然发现我们闪亮的新MySQL服务器的root密码。 相反,我们将使用Ansible保险库功能。 这将创建一个保存我们密码的加密文件,Ansible将能够在运行时读取它。 从playbook的根目录运行以下命令:
$ ansible-vault create group_vars/dev/mysql.yml
  • 系统将提示您输入保管库密码。 确保它是您能记住的东西,因为每次运行Ansible Playbook时都需要它。 输入并确认密码后,您将被移交给编辑者输入您的数据。 插入以下数据:
mysql_root_password: <<ROOTPASSWORD>>
  • 这里,<< ROOTPASSWORD >>是您选择的MySQL密码。 保存文件并退出,Ansible将为您加密。 如果您现在在编辑器中打开文件,您会发现它的内容与此类似:
$ANSIBLE_VAULT;1.1;AES256
63353039653738663232383465343235353166363034306361343637323961663865386137316263
3133383237616662653837613966396666653732376136620a356139633937383830613732336533
37393465396431613737383961316265336331373637373166616430393238326535366333303632
3661643237303266370a346161663533643436643331616165366164326163636234633932336364
34376437323737653566323261666133643834353938323031303865303962366238

TIP

  • 使用Ansible crypt功能是保护敏感数据的绝佳方式,可以在变量文件上使用。 您可以在https://docs.ansible.com/playbooks_vault.html上找到有关crcypt功能的更多详细信息。
  • 现在我们有了.my.cnf文件,我们可以整理一下。 在Ubuntu 14.04的默认安装中,创建了一个匿名用户以及一个测试数据库; 我们将使用Ansible MySQL模块删除这两个。 将以下代码段插入configure_mysql.ym文件中:
name: delete default user
 action: mysql_user user="" state="absent"
- name: remove the test database
 action: mysql_db db=test state=absent
  • 现在我们已经安装并配置了我们的MySQL服务器,现在是时候使用Ansible MySQL模块来创建一个新的数据库和数据库用户。 在这种情况下,我们将为博客创建一个数据库。 在名为create_blog_db.yml的MySQL角色中创建一个新任务,并插入以下内容:
- name: Create MyBlog DB
mysql_db: name=myblog state=present
- name: Create MyBlog User
mysql_user: name=myblog_user password=agreatpassword priv=myblog.*:ALL state=presentpresent
  • 此代码段使用Ansible MySQL模块创建新数据库和具有正确权限的匹配用户以使用它。
  • 最后,我们只需要更新main.yml文件以包含我们的各种任务。 编辑它以包含以下内容:
---
# tasks file for mysql
- include: install_packages.yml
- include: configure_mysql.yml
- include: create_blog_db.yml
  • 我们的新角色已经完成,随时可以使用。 现在,我们只需要更新我们的剧本和库存以包含它。 首先,在编辑器中打开first_playbook.yml文件并添加以下内容:
- name: Manage MySQL
 hosts: mysql
 remote_user: "{{ remote_user }}"
 sudo: yes
 roles:
 - { role: mysql, tags: ['mysql'] }
  • 现在,我们需要更新库存。 打开inventoryories / dev文件并插入以下代码段:
[mysql]
<< mysql_server >>
[dev:children]
nginx
tomcat
mysql
  • 其中mysql_server是您希望在其上配置MySQL的服务器(或多个服务器)。
  • 现在,如果您运行Playbook,您会发现所选主机将安装MySQL,新数据库可供使用。 由于我们现在有一个加密文件,您需要添加--ask-vault-pass开关; 您的命令现在看起来应该类似于以下内容:
$ ansible-playbook --ask-vault-pass -i inventories/dev -k first_playbook.yml
  • 这将提示您输入保管库密码,然后它将解密并使用其中包含的值.

See also

  • You can find out more about the Ansible MySQL module at:
  • http://docs.ansible.com/mysql_db_module.html
  • You can find details of the Ansible MySQL User Module at:
  • http://docs.ansible.com/mysql_user_module.html
  • You can find details of the Ansible Playbook vaults at:
  • https://docs.ansible.com/playbooks_vault.html

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表