使用roles安装lnmp
1、准备四台主机
192.168.142.10
192.168.142.20
192.168.142.30
192.168.142.40
2、10作为ansible管理端
首先ssh连接剩下三台主机
3、vim/etc/ansible/hosts
添加[nginxservers]配置nginx ip,[phpservers]php ip,[mysqlservers]mysql ip
4、cd /etc/ansible
mkdir roles/{nginx,php,mysql}
mkdir -p roles/nginx/{tasks,vars,files,templates,handlers,defaults,meta}
mkdir -p roles/php/{tasks,vars,files,templates,handlers,defaults,meta}
mkdir -p roles/mysql/{tasks,vars,files,templates,handlers,defaults,meta}
touch roles/nginx/{tasks,vars,handlers,defaults,meta}/main.yml
touch roles/php/{tasks,vars,handlers,defaults,meta}/main.yml
touch roles/mysql/{tasks,vars,handlers,defaults,meta}/main.yml
5、准备nginx配置模板文件,需要在管理端下载nginx、php、mysql。
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.j2
mv default.conf.j2 /etc/ansible/roles/nginx/templates/
6、在模板文件中修改j2模板文件
listen {{http_port}};
server_name {{host_name}};
root {{root_dir}};
location ~ \.php$ {
root {{root_dir}};
fastcgi_pass {{remote_addr}}:{{remote_port}};
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME {{root_dir}}$fastcgi_script_name;
include fastcgi_params;
}
7、在vars文件中准备变量
vim main.yml
http_port: 192.168.142.20:80
host_name: www.kgc.com
root_dir: /usr/share/nginx/html
remote_addr: 192.168.142.30
remote_port: 9000
pkg: nginx
service: nginx
8、tasks
cd tasks
vim init.yml(设置关闭防火墙、selinux)
- name: disable selinux
command: '/usr/sbin/setenforce 0'
ignore_errors: true
- name: disable firewalld
systemd: name=firewalld state=stopped enabled=no
ignore_errors: true
这个文件可以复用!!
9、编写main.yml
首先可以进入/etc/ansible/roles/nginx/files
vim index.php
<?php
phpinfo();
?>
再将nginx.repo 复制道files中 cp /etc/yum.repos.d/nginx.repo ./
vim /tasks/main.yml
- include: "init.yml"
- name: copy local yum repo file
copy: src=nginx.repo dest=/etc/yum.repos.d/
- name: install nginx
yum: name=nginx state=latest
- name: copy index.php
copy: src=index.php dest={{root_dir}}
- name: copy template configure file
template: src=default.conf.j2 dest=/etc/nginx/conf.d/default.conf
notify: restart service
- name: start nginx
systemd: name=nginx state=started enabled=yes
vim /handlers/main.yml
- name: restart service
systemd: name=nginx state=restarted
10、创建playbook yml文件
cd /etc/ansible
mkdir playbook
vim lnmproles.yaml
- name: nginx play
hosts: nginxservers
remote_user: root
roles:
- nginx
ansible-playbook lnmproles.yaml
启动剧本
准备mysql
先在本地安装mysql
yum remove mariadb* -y
cd /etc/yum.repos.d
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-community-server
或
wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-server
systemctl start mysqld.service
systemctl enable mysqld.service
grep "password" /var/log/mysqld.log #在日志文件中找出root用户的初始密码
2021-07-31T07:55:00.366359Z 1 [Note] A temporary password is generated for root@localhost: ga7%<d<0*jD&
grep "password" /var/log/mysqld.log | awk '{print $NF}'
##登录 mysql
mysql -uroot -p
Enter password: #输入初始密码 ga7%<d<0*jD&
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123'; #密码设置要求有 大小写字母、数字和符号 组合
grant all privileges on *.* to root@"%" identified by "Admin@123" with grant option;
flush privileges;
yum -y remove mysql57-community-release-el7-10.noarch #为了防止每次yum操作都会自动更新,卸载这个软件
首先cp /etc/ansible/roles/nginx/tasks/init.yml /etc/ansible/roles/mysql/tasks/
vim /etc/ansible/roles/mysql/tasks/main.yml
- include: init.yml
- name: remove mariadb
command: 'yum remove mariadb* -y && cd /etc/yum.repo.d'
- name: yum install mysql
shell: 'wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm && yum -y install mysql57-community-release-el7-10.noarch.rpm'
ignore_errors: true
- name: replace file
replace: "path=/etc/yum.repos.d/mysql-community.repo regexp='gpgcheck=1' replace='gpgcheck=0'"
- name: yum install mysql1
yum: name=mysql-community-server
- name: system mysql
service: enabled=true name={{svc}} state=started
vim /etc/ansible/roles/mysql/vars/main.yml
svc: mysqld
cd /etc/ansible/playbook
vim /etc/ansible/playbook/lnmproles.yaml
- name: nginx play
hosts: nginxservers
remote_user: root
roles:
- nginx
- name: mysql play
hosts: mysqlservers
remote_user: root
roles:
- mysql
准备php
首先现在本机yum安装php
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-redis
systemctl start php-fpm
systemctl enable php-fpm
php -v
useradd -M -s /sbin/nologin php
vim /etc/php.ini
date.timezone = Asia/Shanghai
vim /etc/php-fpm.d/www.conf
user = php
group = php
listen = 192.168.142.30:9000
listen.allowed_clients = 192.168.142.30
cp /etc/php.ini /etc/ansible/roles/php/files
cp /etc/php-fpm.d/www.conf /etc/ansible/roles/php/files
vim php.ini
#877 date.timezone = Asia/Shanghai
vim /etc/ansible/roles/php/tasks/main.yml
- include: init.yml
- name: install epel
shell: 'rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm'
- name: install php
yum: name={{item}}
with_items:
- php72w
- php72w-cli
- php72w-common
- php72w-devel
- php72w-embedded
- php72w-gd
- php72w-mbstring
- php72w-pdo
- php72w-xml
- php72w-fpm
- php72w-mysqlnd
- php72w-opcache
- php72w-redis
- name: create php user
user: name={{user_name}}
- name: copy php configure file
copy: src=php.ini dest=/etc/php.ini
- name: modify www.conf
replace: path=/etc/php-fpm.d/www.conf regexp="apache" replace="php"
- name: modify listen address
replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1:9000" replace={{http_port}}
- name: modify allowed_clients
replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1" replace={{remote_addr}}
- name: create root dir
file: state=directory path={{root_dir}}
- name: copy index.php
copy: src=index.php dest={{root_dir}}
- name: start php
systemd: name=php-fpm state=started enabled=yes
cp /etc/ansible/roles/nginx/tasks/init.yml /etc/ansible/roles/php/tasks
cp /etc/ansible/roles/nginx/files/index.php /etc/ansible/roles/php/files/
cd /php/vars
vim main.yml
user_name: php
http_port: 192.168.142.30:9000
remote_addr: 192.168.142.20
root_dir: /usr/share/nginx/html
cd /etc/ansible/playbook
vim lnmproles.yaml
- name: nginx play
hosts: nginxservers
remote_user: root
roles:
- nginx
- name: mysql play
hosts: mysqlservers
remote_user: root
roles:
- mysql
- name: php play
hosts: phpservers
remote_user: root
roles:
- php
安装成功
验证
浏览器访问:http://192.168.142.20/index.php