ansible編譯安裝LNMP

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"  #創建

希望以上可以幫助到你,嘻嘻
可否給在下,一個大大的贊,感謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章