用playbook 部署lamp

配置四台主机:

192.168.170.120 ansible主机

192.168.170.155 安装apache

192.168.170.156 安装mysql

192.168.170.157 安装php




#配置yum源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
[root@localhost ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# sed  -i 's#\$releasever#8#g'  /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@localhost ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@localhost ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@localhost ~]# sed  -i 's#\$releasever#8#g'  /etc/yum.repos.d/epel.repo


安装ansible

[root@localhost ~]# yum -y install ansible
 
 
 
 
 

[root@localhost ~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.170.155 node2
192.168.170.156 node3
192.168.170.157 node4
~
~

 

 

设置三台主机免密登录

 

[root@localhost ~]# ssh-keygen -t rsa                               //全部按回车

[root@localhost ~]# ssh-copy-id root@node2

[root@localhost ~]# ssh-copy-id root@node3

[root@localhost ~]# ssh-copy-id root@node4

 
[root@localhost ~]# vim /etc/ansible/ansible.cfg 


# some basic default values...

inventory = /etc/ansible/inventory              // 把清单文件改成inventory
#library = /usr/share/my_modules/

 

[root@localhost ~]# vi /etc/ansible/inventory

node2
node3
node4
~~~

 
 
 
 

用ping来查看是否连接

 

[root@localhost ~]# ansible all -m ping
node3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node4 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}

 
 
 
 
 
 
 
  把yum源发到三台主机上
[root@localhost ~]# ansible all -m copy -a 'src=/etc/yum.repos.d/  dest=/etc/yum.repos.d/'
node2 | CHANGED => {
    "changed": true,
    "dest": "/etc/yum.repos.d/",
    "src": "/etc/yum.repos.d/"
}
node3 | CHANGED => {
    "changed": true,
    "dest": "/etc/yum.repos.d/",
    "src": "/etc/yum.repos.d/"
}
node4 | CHANGED => {
    "changed": true,
    "dest": "/etc/yum.repos.d/",
    "src": "/etc/yum.repos.d/"
}


[root@localhost ~]# tree
.
├── anaconda-ks.cfg
├── apr-1.7.0.tar.gz
├── apr-util-1.6.1.tar.gz
├── httpd-2.4.46.tar.bz2
├── lamp
│   ├── httpd
│   │   ├── httpd.yml
│   │   └── scripts
│   │   ├── apr.sh
│   │   ├── apr_util.sh
│   │   ├── config.sh
│   │   └── httpd.sh
│   ├── mysql
│   │   ├── mysql.yml
│   │   ├── scripts
│   │   │   ├── chpass.sh
│   │   │   └── mysql.sh
│   │   └── templates
│   │   └── my.cnf
│   └── php
│   ├── php.yml
│   └── scripts
│   └── phpcfg.sh
└── mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

 




编写httpd的playbook


---
- hosts: node2
  tasks:
    - name: install tools
      yum:
        name: "@Development tools"
        state: present


    - name: create user apache
      user:
        name: apache
        system: yes
        create_home: no
        shell: /sbin/nologin
        state: present

 

 

    - name: install bz2....
      yum:
        name: bzip2,make,openssl-devel,pcre-devel,expat-devel,libtool,gcc,gcc-c++,libxml2-devel
        state: present

    - name: copy apr
      copy:
        src: /root/apr-1.7.0.tar.gz

        dest: /root/
    - name: copy apr-util
      copy:
        src: /root/apr-util-1.6.1.tar.gz
        dest: /root/
    - name: copy httpd
      copy:
        src: /root/httpd-2.4.46.tar.bz2
      dest: /root/
   - name: man config
     lineinfile:
      path: /etc/man_db.conf
        line: 'MANDATORY_MANPATH /usr/local/apache/man'
        state: present
   - name: install apr
      script: /root/lamp/httpd/scripts/apr.sh
   - name: install apr-util
    script: /root/lamp/httpd/scripts/apr_util.sh
   - name: install httpd
     script: /root/lamp/httpd/scripts/httpd.sh
   - name: set config start
      script: /root/lamp/httpd/scripts/config.sh

 





//配置apr.sh脚本

[root@localhost ~]# vim /root/lamp/httpd/scripts/apr.sh

#!/bin/bash
# unzip apr
tar xf /root/apr-1.7.0.tar.gz
# delete notes
sed -i 's|$RM "$cfgfile"|#$RM "$cfgfile"|' /root/apr-1.7.0/configure
# install apr
cd /root/apr-1.7.0 && ./configure --prefix=/usr/local/apr
make && make install
~



//配置apr-util.sh脚本

[root@localhost ~]# vim /root/lamp/httpd/scripts/apr_util.sh

#!/bin/bash
# unzip apr-util
tar xf /root/apr-util-1.6.1.tar.gz
# install apr-util
cd /root/apr-util-1.6.1 && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
~



配置httpd.sh脚本

[root@localhost ~]# vim /root/lamp/httpd/scripts/httpd.sh

#!/bin/bash
# unzip httpd
tar xf /root/httpd-2.4.46.tar.bz2
# install httpd
cd /root/httpd-2.4.46 && ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make && make install
~





















//配置httpd的config.sh

[root@localhost ~]# vim /root/lamp/httpd/scripts/config.sh

tar xf /root/apr-util-1.6.1.tar.gz
# install apr-util
cd /root/apr-util-1.6.1 && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
# unzip httpd
tar xf /root/httpd-2.4.46.tar.bz2
# install httpd
cd /root/httpd-2.4.46 && ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork && make && make install
# path config
echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
# include config
ln -s /usr/local/apache/include/ /usr/include/httpd
# delete notes
sed -i '/proxy_module/s/#//g' /etc/httpd24/httpd.conf
sed -i '/proxy_fcgi_module/s/#//g' /etc/httpd24/httpd.conf
# conifg
sed -i '/ DirectoryIndex/s/index.html/index.php index.html/g' /etc/httpd24/httpd.conf
sed -i 's|AddType application/x-gzip .gz .tgz|AddType application/x-gzip .gz .tgz\n AddType application/x-httpd-php .php\n AddType application/x-httpd-php-source .phps|' /etc/httpd24/httpd.conf
# set virtualhost
echo -e '<VirtualHost *:80>\n DocumentRoot "/usr/local/apache/htdocs/"\n ServerName www.meijianbiao.com\n ProxyRequests Off\n ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.170.155:9000/var/www/html/$1\n <Directory "/usr/local/apache/htdocs/">\n Options none\n AllowOverride none\n Require all granted\n </Directory>\n</VirtualHost>' >> /etc/httpd24/httpd.conf
# restart apache
apachectl restart





 

 

编写mysql的playbo

 

---
- hosts: node3
  tasks:
    - name: install package
      yum:
        name: ncurses-devel,openssl-devel,openssl,cmake,mariadb-devel,ncurses-compat-libs
        state: present


    - name: create user mysql
      user:
        name: mysql
        system: yes
        create_home: no
        shell: /sbin/nologin
        state: present


    - name: copy mysql package
      copy:
        src: /root/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
        dest: /root/

    - name: my.cnf
      template:
        src: /root/lamp/mysql/templates/my.cnf
        dest: /etc/

 

    - name: man config
      lineinfile:
        path: /etc/man_db.conf
        line: 'MANDATORY_MANPATH /usr/local/mysql/man'
        state: present

    - name: config
      script: /root/lamp/mysql/scripts/mysql.sh
    - name: change password
      script: /root/lamp/mysql/scripts/chpass.sh

 

 

 

 

 

 

 

 


配置脚本

[root@localhost ~]# vim /root/lamp/mysql/scripts/mysql.sh

#!/bin/bash
#uncompress
tar -xf /root/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
#link
ln -s /usr/local/mysql-5.7.31-linux-glibc2.12-x86_64/ /usr/local/mysql
#chown
chown -R mysql.mysql /usr/local/mysql*
#variable
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/myslq.sh
source /etc/profile.d/myslq.sh
#include
ln -s /usr/local/mysql/include/ /usr/include/mysql
#lib
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/msqly.conf
ldconfig
#initizlize mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/mydata > /root/password 2>&1
#start script
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
sed -ri 's#^(datadir=).*#\1/mydata#g' /etc/init.d/mysqld
#start mysql
service mysqld start

//配置my.cnf模板

[root@localhost ~]# vim /root/lamp/mysql/templates/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /mydata
socket = /tmp/mysql.sock
port = 3306
pid-file = /mydata/mysql.pid
user = mysql
skip-name-resolve
~
~
~
~
~

 

 

//配置chpass.sh

[root@localhost ~]# vim /root/lamp/mysql/scripts/chpass.sh

#!/bin/bash
# change pass
/usr/local/mysql/bin/mysql -uroot -p"$pass" --connect-expired-password -e "set password = password(\"123456\");"
~
~


 

 

 

编写php的playbook

[root@localhost ~]# vim /root/lamp/php/php.yml

---
- hosts: node4
tasks:
- name: install tools
yum:
name: "@Development tools"
state: present

- name: install package
yum:
name: libxml2,libxml2-devel,openssl,openssl-devel,bzip2,bzip2-devel,libcurl,libcurl-devel,libicu-devel,libjpeg,libjpeg-devel,libpng,libpng-devel,openldap-devel,pcre-devel,freetype,freetype-devel,gmp,gmp-devel,libmcrypt,libmcrypt-devel,readline,readline-devel,libxslt,libxslt-devel,mhash,mhash-devel,php-mysqlnd
state: present

 

- name: install php
yum:
name: php-*
state: present

 

- name:  
script: /root/lamp/php/scripts/phpcfg.sh

 

 

配置php脚本

[root@localhost ~]# vim /root/lamp/php/scripts/phpcfg.sh

#!/bin/bash
# create php test html
echo -e "<?php\n\tphpinfo();\n?>" > /var/www/html/index.php
chown -R apache.apache /var/www/html/
sed -i 's#listen = /run/php-fpm/www.sock#listen=0.0.0.0:9000#' /etc/php-fpm.d/www.conf
sed -i 's#127.0.0.1#192.168.170.155#' /etc/php-fpm.d/www.conf
~
~
~

 

//执行playbook

[root@localhost ~]# vim /root/lamp/httpd/httpd.yml
[root@localhost ~]# vim /root/lamp/mysql/mysql.yml
[root@localhost ~]# vim /root/lamp/php/php.yml

 

 

 

 

 

 

 

 

 

posted @ 2021-01-10 23:43  取个名字真滴难  阅读(106)  评论(0)    收藏  举报