当前位置:   article > 正文

Ansible工具实现LAMP集群环境自动化搭建_ansible角色lamp

ansible角色lamp

Ansible主要是通过SSH协议进行机器的管理

安装完成之后,不需要启动或者运行一个后台进程,或者添加一个数据可,只要在一台电脑上安装好,就可以通过一台机器管理一组远程机器,而在远程机器上不需要安装任何软件

一、ansible的安装

1)yum安装

yum install -y ansible

2)pip安装

pip是一个安装和管理python软件包的工具

pip install -y ansible

3)源码安装

  1. git clone git://github.com/ansible/ansible.git --recursive
  2. cd ./ansible
  3. source ./hacking/env-setup

二、三台主机之间实现免密码登录 ——【一主二辅】

管理主机:192.168.3.6

控制主机:192.168.3.69 192.168.3.70

  1. 生成公钥和私钥:ssh-keygen -P ''
  2. /root/.ssh下的id_rsa.pub文件拷贝到另外的主机
  3. 注:ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中。
  4. ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.3.69

三、ansible配置文件

hosts文件是用来指定被ansible管理的文件

roles是用来指定每一个角色

ansible.cfg核心配置文件

  1. 配置文件目录:/etc/ansible
  2. [root@localhost ansible]# ll
  3. total 24
  4. -rw-r--r-- 1 root root 19336 Apr 18 03:46 ansible.cfg
  5. -rw-r--r-- 1 root root 1048 Apr 18 03:53 hosts
  6. drwxr-xr-x 2 root root 6 Mar 27 17:30 roles

1)编辑ansible.cfg文件:

  1. #禁用每次执行ansible命令检查ssh key host
  2. host_key_checking = False
  3. #开启日志记录
  4. log_path = /var/log/ansible.log
  5. #ansible连接加速装置
  6. accelerate_port = 10000
  7. accelerate_multi_key = yes

2)编辑hosts文件

  1. #添加控制主机并分组
  2. [webservers]
  3. 192.168.3.69
  4. [dataserver]
  5. 192.168.3.70

3)模块介绍

【command模块】

在管理主机上执行shell命令的模块:-a 运行命令

ansible web -a "ifconfig"

【shell模块】

shell模块支持使用管道,而command不支持使用

  1. ansible app -m shell -a "echo '123'| passwd --stdin jk"
  2. 特别的:-m 指明所使用的模块 -a 运行相应的命令

【copy模块】

将ansible上的文件复制到指定控制主机上

ansible all -m copy -a "src=/etc/hosts dest=/tmp/hosts"

当然在复制过程中也可以指定 owner=,group= ,mode= , 例如:

ansible all -m copy -a "src=/etc/fstab dest=/tmp owner=yhy group=yhy mode=644"

同样的也可以将内容复制过去。例如

  1. ansible all -m copy -a "content='hello i will come back ' dest=/tmp/hello owner=yhy group=yhy mode=644"
  2. 特别的:all 表示所有控制主机

【yum模块】

基于yum管理程序包

  1. #安装httpd程序包,latest表示安装的包是最新的
  2. ansible app -m yum -a "name=httpd state=latest"
  3. #卸载httpd程序包
  4. ansible app -m yum -a "name=http* state=absent"

【service模块】

管理被监控的主机

  1. #让服务启动与关闭
  2. ansible app -m service -a "name=httpd state=started"
  3. ansible app -m service -a "name=httpd state=stoped"

4)YAML文件

 

四、使用ansible部署LAMP环境

前提:管理主机上已经配置好关于HTTP、PHP、MySQL主配置文件的相关配置参数

1)创建YAML文件 —— lamp.yml(剧本)

  1. - hosts: webservers
  2.  remote_user: root
  3.  tasks:
  4.  - name: Install Apache Httpd
  5.    yum: name={{ item }} state=present disable_gpg_check=yes
  6.    with_items:
  7.        - httpd
  8.        - php
  9.        - php-mysql
  10.  - name: Install Configuration File
  11.    template: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf
  12.    notify:
  13.    - restart httpd
  14.  - name: Start Httpd Service
  15.    service: enabled=true name=httpd state=started
  16.  handlers:
  17.  - name: restart httpd
  18.    service: name=httpd state=restarted
  19. - hosts: dataserver
  20.  remote_user: root
  21.  tasks:
  22.  - name: Install MySQL Server
  23.    yum: name=mariadb-server state=present disable_gpg_check=yes
  24.  - name: Install Configuration File
  25.    template: src=/etc/my.cnf dest=/etc/my.cnf
  26.    notify:
  27.    - restart MySQL
  28.  - name: Start MySQL Server
  29.    service: name=mariadb state=started
  30.  handlers:
  31.  - name: restart MySQL
  32.    service: name=mariadb state=restarted

2)运行

ansible-playbook lamp.yml

此时已经在控制主机上webserver上安装好http和php,在dataserver上安装好MySQL

3)在控制主机dataserver上安装python连接MySQL的驱动

ansible dataserver -m yum -a "name=MySQL-python state=present disable_gpg_check=yes"

4)在控制主机dataserver上创建MySQL的用户

ansible dataserver -m mysql_user -a "name=test password=12345 host=% state=present"

特别的:因为PHP和MySQL分别安装在不同的主机上面,所以要保证数据库在连接的过程中外网能够进行访问,所以在创建用户的过程中必须给用户授权来保证外网能够连接

5)测试PHP连接MySQL成功

在本地创建index.php页面

PHP连接MySQL的测试代码

  1. <?php
  2. $link = mysql_connect('192.168.3.70', 'test', '12345');
  3. if (!$link) {
  4. die('Could not connect: ' . mysql_error());
  5. }
  6. echo 'Connected successfully';
  7. mysql_close($link);
  8. phpinfo()
  9. ?>
ansible webserver -m copy -a "src=/root/index.php dest=/var/www/html/index.php"

在浏览器上进行访问,看是否连接成功

  1. #PHP实现图片循环
  2. <?php
  3. header('Content-Type: image/jpeg');
  4. $data = file_get_contents('/images/1.jpg');
  5. echo $data;
  6. ?>

参考文档:

https://www.linuxidc.com/Linux/2016-04/130025.htm https://zhidao.baidu.com/question/559629805.html

MySQL添加新用户、为用户创建数据库、为新用户分配权限:https://blog.csdn.net/piaocoder/article/details/53704126

https://blog.csdn.net/xyang81/article/details/51568227 https://linux.cn/article-4215-2.html

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1021013
推荐阅读
相关标签
  

闽ICP备14008679号