ansible編譯安裝LNMP
前言
ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
master_ansible:IP:192.168.0.250
slave1_節點服務器:IP:192.168.0.201
1、免密鑰登陸:[master執行]
yum -y install epel-release.noarch ##HTTP-Tools軟件包由YUM-EPEL源提供。
yum -y install ansible zip unzip 安裝ansible
unzip ansible.zip # 解壓
ssh-keygen -t dsa #生產密鑰
ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.0.251 #密鑰傳過去
2、配置主機清單 [master執行]
cat /etc/ansible/hosts
[lnmp] #主機清單
192.168.0.251
3、下載ansible [master執行]
已經寫好的ansible,安裝lnmp ,裏面詳細解釋,可下載直接使用,
鏈接:https://pan.baidu.com/s/13K6nyszMR1K2rUQiSTJi4g
提取碼:vjhn
4、下載解壓放到root目錄下即可 [master執行]
[root@localhost ansible]# ls
lnmp_role.yml roles
[root@localhost ansible]# pwd
/root/ansible
[root@localhost ansible]# ansible-playbook lnmp_role.yml
PLAY [lnmp] ********************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : disabled selinux] ************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : firewalld stop] **************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : install package] *************************************************************************************************************************************************************
ok: [192.168.0.251] => (item=[u'pcre-devel', u'zlib-devel', u'gcc-c++', u'elinks', u'psmisc'])
TASK [nginx : remove httpd] ****************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : create nginx] ****************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : copy nginx.tar] **************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : copy nginxstart.sh] **********************************************************************************************************************************************************
changed: [192.168.0.251]
5、驗證效果 [master執行]
nginx驗證
ansible lnmp -m shell -a 'elinks http://localhost/status'
php連接驗證,網頁訪問 #筆記本客戶端執行
http://192.168.0.251/test.php
6、skyuc安裝
#筆記本客戶端執行
http://192.168.0.251/skyuc/install/index.php
立即安裝
密碼圖片寫錯了:注意,注意,注意sky@uc123
完成安裝
詳細配置SKYUC
https://blog.csdn.net/lxy___/article/details/105144219
7、詳細解釋
[root@localhost ansible]# tree -L 5
.
├── lnmp_role.yml
└── roles
├── cmake
│ └── tasks
│ ├── files
│ │ └── cmake-2.8.6.tar.gz
│ └── main.yml
├── mysqld
│ └── tasks
│ ├── files
│ │ ├── my-medium.cnf
│ │ ├── mysql-5.5.22.tar.gz
│ │ └── mysql.server
│ └── main.yml
├── nginx
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── files
│ │ │ ├── dis_selinux
│ │ │ ├── nginx-1.6.0.tar.gz
│ │ │ └── nginxstart.sh
│ │ └── main.yml
│ └── templates
│ └── nginx.conf.j2
├── php
│ ├── tasks
│ │ ├── files
│ │ │ ├── php-5.3.28.tar.gz
│ │ │ ├── php.ini-development
│ │ │ ├── ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
│ │ │ └── ZendGuardLoader.so
│ │ └── main.yml
│ └── templates
│ ├── php-fpm.conf.j2
│ └── test.php.j2
└── SKYUC
└── tasks
├── files
│ ├── SKYUC.v3.4.2.SOURCE.zip
│ └── wwwroot
└── main.yml
cmake劇本
[root@localhost roles]# pwd
/root/ansible/roles
[root@localhost roles]# ls
cmake mysqld nginx php SKYUC
[root@localhost roles]# cat cmake/tasks/main.yml
- name: copy cmake #本地複製到目標文件
copy:
src: cmake-2.8.6.tar.gz #本地
dest: /usr/src/ #目標
- name: install package
yum:
name: ncurses-devel #安裝包名稱
state: present #安裝
- name: tar cmake
shell: cd /usr/src/; tar zxf cmake-2.8.6.tar.gz -C /usr/src #解壓
- name: configure #編譯安裝
shell: cd /usr/src/cmake-2.8.6/; ./configure && gmake && gmake install
mysql劇本
[root@localhost roles]# cat mysqld/tasks/main.yml
- name: yum package
yum:
name: libaio-devel #安裝包名稱
state: present #安裝
- name: copy mysql package
copy:
src: mysql-5.5.22.tar.gz #本地
dest: /usr/src/ #目標
- name: tar mysql
shell: cd /usr/src/;tar zxf mysql-5.5.22.tar.gz -C /usr/src/ #解壓
- name: install configure #編譯安裝
shell: cd /usr/src/mysql-5.5.22; cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc/ && make && make install
- name: copy my.cnf
copy:
src: my-medium.cnf #本地
dest: /etc/my.cnf #目標
- name: copy mysql
copy:
src: mysql.server #本地
dest: /etc/rc.d/init.d/mysqld #目標
mode: 0777 #權限
- name: mysql-PATH
lineinfile: #在末尾行添加數據
dest: /etc/profile #目標文件
line: 'PATH=$PATH:/usr/local/mysql/bin' #添加數據內容
state: present #出席
- name: start /etc/profile
shell: /usr/bin/sh /etc/profile #啓動環境變量
- name: add group mysql #創建mysql組
group:
name: mysql #組名稱
state: present #創建
system: yes #系統目錄
- name: add user mysql #創建myslq用戶
user:
name: mysql #用戶名稱
state: present #創建
system: yes #系統目錄
groups: mysql #加入組
- name: chown /usr/local/mysql/
file:
dest: /usr/local/mysql/ #目標
mode: 0777 #權限
owner: mysql #屬主
group: mysql #數組
recurse: yes #遞歸
- name: myql install_db #初始化
shell: /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
- name: start mysqld enabled #啓動mysql
shell: /etc/rc.d/init.d/mysqld start
- name: enabled nginx #加入開機自動啓動,在末尾行添加數據內容
lineinfile:
dest: /etc/rc.d/rc.local #本地
line: /etc/init.d/mysqld start #添加內容
mode: 0777 #權限
- name: mysql password #改myslq密碼
shell: /usr/local/mysql/bin/mysqladmin -u root password 'pwd123' ; echo 123> test.txt
nginx劇本
[root@localhost roles]# cat nginx/tasks/main.yml
- name: disabled selinux
copy:
src: dis_selinux #本地文件
dest: /etc/selinux/config #複製到目標文件
- name: firewalld stop #關閉防火牆
service:
name: firewalld
state: stopped #停止
enabled: no #警用開機自動啓動
- name: install package #安裝對應包
yum: name={{ item }} state=present #調用變量,方便安裝多個包使用
with_items:
- pcre-devel
- zlib-devel
- gcc-c++
- elinks
- psmisc
- name: remove httpd #卸載http
yum:
name: httpd
state: absent #卸載
- name: create nginx
user:
name: nginx #賬號名稱
system: yes #創建系統目錄
state: present #創建
- name: copy nginx.tar
copy:
src: nginx-1.6.0.tar.gz
dest: /usr/src/nginx-1.6.0.tar.gz
- name: copy nginxstart.sh
copy:
src: nginxstart.sh
dest: /etc/init.d/nginx
mode: 0777 #給目錄權限
- name: tar nginx
shell: cd /usr/src/; tar zxf nginx-1.6.0.tar.gz -C /usr/src/
- name: configure make make install
shell: cd /usr/src/nginx-1.6.0/;./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
- name: create nginx file=link(ln)
file:
src: /usr/local/nginx/sbin/nginx #本地
path: /usr/local/sbin/nginx #path=目標
state: link #軟連接
- name: create directory baidu
file:
path: /var/www/baidu/ #path=目標
state: directory #創建類型爲[目錄]
mode: 0777 #權限
- name: create touch baidu.access.log
file:
path: /var/www/baidu/baidu.access.log #目標文件
state: touch #創建類型爲[文件]
mode: 0777 #權限
- name: copy nginx.conf
template:
src: nginx.conf.j2 #複製本地模板
dest: /usr/local/nginx/conf/nginx.conf #目標
notify: restart nginx #重啓nginx服務器,notify[調用handlers]
- name: create index.html
shell: echo This is lanp server > /var/www/baidu/index.html #創建index 訪問
- name: start nginx
shell: /etc/init.d/nginx start #啓動nginx
- name: enabled nginx
lineinfile: #在目標文件,末尾行添加一條數據
dest: /etc/rc.d/rc.local #目標文件
line: /etc/init.d/nginx start #添加內容
mode: 0777 #權限
php劇本
[root@localhost roles]# cat php/tasks/main.yml
- name: copy php.tar #複製包
copy:
src: php-5.3.28.tar.gz #本地
dest: /usr/src/ #目標
- name: yum package
yum:
name: gd,libxml2-devel,libjpeg-devel,libpng-devel #安裝包名稱
state: present #安裝
- name: tar conf
shell: cd /usr/src/; tar zxf php-5.3.28.tar.gz -C /usr/src #解壓
- name: configure #編譯安裝
shell: cd /usr/src/php-5.3.28; ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
- name: copy php.ini #複製php.ini
copy:
src: php.ini-development #本地
dest: /usr/local/php5/php.ini #目標
- name: link #創建軟連接
file:
src: /usr/local/php5/bin/{{ item }} # src是重點:[目標]結點,創建軟連接調用變量,創建軟連接文件比較多,所以我調用變量實現
dest: /usr/local/bin/{{ item }} #dest目標
state: link #軟連接
with_items: #變量名稱
- pear
- peardev
- pecl
- phar
- phar.phar
- php
- php-config
- phpize
- name: link #軟連接
file:
src: /usr/local/php5/sbin/php-fpm
dest: /usr/local/sbin/php-fpm
state: link
- name: copy tar.Zend
copy:
src: ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz #本地
dest: /usr/src/ #目標
- name: tar Zend #解壓
shell: cd /usr/src/; tar -zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/src
- name: copy ZendGuardLoader.so
copy:
src: ZendGuardLoader.so #本地
dest: /usr/local/php5/lib/php/ZendGuardLoader.so #目標
- name: copy php-fpm.conf
template:
src: php-fpm.conf.j2 #本地
dest: /usr/local/php5/etc/php-fpm.conf #目標
- name: add user php #創建用戶
user:
name: php
system: yes
shell: /sbin/nologin #shell 路徑
state: present
- name: restart php
shell: /usr/local/sbin/php-fpm ; echo php > php.txt #啓動php
- name: test php #複製模板
template:
src: test.php.j2
dest: /var/www/baidu/test.php
notify: restart nginx #啓動nignx
SKYUC劇本
[root@localhost roles]# cat SKYUC/tasks/main.yml
- name: Installed mysql-python Server #安裝包名稱,這個包作用,管理mysql_db,mysql_user模塊,不安裝報錯
yum: name={{ packages }} state=present
vars:
packages:
- MySQL-python
- name: yum package
yum:
name: unzip
state: present
- name: copy SKYUC.zip #複製壓縮包
copy:
src: SKYUC.v3.4.2.SOURCE.zip #本地
dest: /usr/src/ #目標
- name: tar SKYUC #解壓壓縮包
shell: cd /usr/src/; unzip SKYUC.v3.4.2.SOURCE.zip ;echo skyuc > /root/skyuc.txt #之所以添加skyuc.txt,原因重複執行劇本失敗,
- name: create skyuc #創建目錄
file:
path: /var/www/baidu/skyuc #目錄名稱
state: directory #創建類型爲目錄
- name: mv SKYUC.v3.4.2.SOURCE #移動數據
shell: mv /usr/src/SKYUC.v3.4.2.SOURCE/wwwroot/* /var/www/baidu/skyuc/; echo mvtest > /root/mv.txt
- name: grant php #給對應目錄文件授權
file:
path: /var/www/baidu/skyuc/{{ item }}
recurse: yes #遞歸
owner: php #屬主
group: php #屬組
mode: 0777 #0777權限
with_items: #多個目錄需要,所以調用變量名稱
- admincp
- data
- templates
- upload
- name: add skyucdb #創建mysql用戶
mysql_db:
login_host: "127.0.0.1" #指定地址
login_user: "root" #mysql登錄賬號
login_password: "pwd123" #myslq登錄密碼
name: "skyucdb" #創建用戶名稱
- name: grant user #授權
mysql_user:
login_host: "127.0.0.1" #指定地址
login_user: "root" #mysql登錄賬號
login_password: "pwd123" #myslq登錄密碼
name: "runskyuc" #授權的賬號
password: "sky@uc123" #授權的賬號密碼
priv: "skyucdb.*:ALL,GRANT" #授權賬號,all所有權限
state: "present" #創建
希望以上可以幫助到你,嘻嘻
可否給在下,一個大大的贊,感謝!