經過ansible roles
配置lnmp
環境,nginx
經過源碼編譯安裝,php
經過源碼編譯安裝,mysql
經過yum
安裝(mysql
源碼編譯超級慢)支持系統(centos6.x
和centos7.x
系列)php
說明: 將nginx和php源碼包放到對應的角色文件下的files目錄下,經過vars/main.yml控制安裝的版本和路徑。以下:mysql
[root@ansible roles]# cat nginx/vars/main.yml DOWNLOAD_DIR: "/usr/local/src/" #軟件包拷貝到目標主機的存放路徑 INSTALL_DIR: "/usr/local/" #安裝路徑 NGINX_VERSION: "1.12.2" #軟件包版本 USER: "nginx" #運行的用戶 GROUP: "nginx" #運行的組
環境配置參考nginx
這裏角色都統一放在了/etc/ansible/roles
下c++
安裝編譯時所須要用到的依賴包git
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# cat init_pkg.yml #安裝源碼編譯php、nginx時所須要用到的依賴包 --- - hosts: all remote_user: root tasks: - name: Install Package yum: name={{ item }} state=installed with_items: - gcc-c++ - glibc - glibc-devel - glib2 - glib2-devel - pcre - pcre-devel - zlib - zlib-devel - openssl - openssl-devel - libpng - libpng-devel - freetype - freetype-devel - libxml2 - libxml2-devel - bzip2 - bzip2-devel - ncurses - curl - gdbm-devel - libXpm-devel - libX11-devel - gd-devel - gmp-devel - readline-devel - libxslt-devel - expat-devel - xmlrpc-c - libcurl-devel
1)建立相應文件夾github
[root@ansible roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
2)最終編寫效果sql
[root@ansible roles]# tree nginx nginx ├── files │ ├── nginx-1.12.2.tar.gz │ └── nginx-1.16.0.tar.gz ├── handlers │ └── main.yml ├── tasks │ ├── config.yml │ ├── copypkg.yml │ ├── group.yml │ ├── install.yml │ ├── main.yml │ ├── service.yml │ └── user.yml ├── templates │ ├── nginx.conf.j2 │ ├── nginx_init.j2 │ └── nginx.service.j2 └── vars └── main.yml 5 directories, 14 files
1)建立相應文件夾shell
[root@ansible roles]# mkdir -p php/{files,handlers,tasks,templates,vars}
2)最終編寫效果centos
[root@ansible roles]# tree php php ├── files │ └── php-5.6.40.tar.gz ├── handlers │ └── main.yml ├── tasks │ ├── config.yml │ ├── copypkg.yml │ ├── group.yml │ ├── install.yml │ ├── main.yml │ ├── service.yml │ └── user.yml ├── templates │ ├── php-fpm.conf.j2 │ ├── php-fpm.init.j2 │ ├── php-fpm.service.j2 │ └── php.ini.j2 └── vars └── main.yml 5 directories, 14 files
1)建立相應文件夾curl
[root@ansible roles]# mkdir -p mysql/{files,handlers,tasks,templates,vars}
2)最終編寫效果
[root@ansible roles]# tree mysql mysql ├── files ├── handlers │ └── main.yml ├── tasks │ ├── config.yml │ ├── install.yml │ ├── main.yml │ └── service.yml ├── templates │ ├── my.cnf6.j2 │ └── my.cnf7.j2 └── vars 5 directories, 7 files
[root@ansible roles]# cat nginx_roles.yml #源碼編譯安裝nginx --- - hosts: all remote_user: root roles: - role: nginx [root@ansible roles]# cat php_roles.yml #源碼編譯安裝nginx --- - hosts: all remote_user: root roles: - role: php [root@ansible roles]# cat mysql_roles.yml #yum安裝MySQL --- - hosts: all remote_user: root roles: - role: mysql [root@ansible roles]# cat lnmp.yml #配置lnmp,建立虛擬主機 --- - hosts: all remote_user: root roles: - role: nginx - role: php - role: mysql vars: PORT: 8081 WEBDIR: "/opt/www" CONFIGDIR: "/usr/local/nginx/conf/conf.d" tasks: - name: create vhost dir file: name={{ WEBDIR }} state=directory owner=www group=www mode=755 - name: create vhost conf template: src=vhost.conf.j2 dest={{ CONFIGDIR }}/vhost.conf notify: Restart Nginx - name: create index.php shell: "echo '<?php phpinfo(); ?>' > {{ WEBDIR }}/index.php" handlers: - name: Restart Nginx service: name=nginx state=restarted # hostslist文件準備,這樣方便執行,能夠在執行playbook時指定某臺機器上運行 [root@ansible roles]# cat hostlist 192.168.1.31 192.168.1.32 192.168.1.33 192.168.1.36 #全部文件查看 [root@ansible roles]# ll 總用量 28 -rw-r--r--. 1 root root 53 6月 4 22:37 hostlist -rw-r--r--. 1 root root 824 6月 5 10:53 init_pkg.yml -rw-r--r--. 1 root root 646 6月 5 12:05 lnmp.yml drwxr-xr-x. 7 root root 77 6月 5 10:44 mysql -rw-r--r--. 1 root root 81 6月 5 10:06 mysql_roles.yml drwxr-xr-x. 7 root root 77 6月 4 15:37 nginx -rw-r--r--. 1 root root 89 6月 4 17:10 nginx_roles.yml drwxr-xr-x. 7 root root 77 6月 4 17:18 php -rw-r--r--. 1 root root 87 6月 4 17:37 php_roles.yml -rw-r--r--. 1 root root 811 6月 5 11:53 vhost.conf.j2
[root@ansible roles]# tree . ├── hostlist ├── init_pkg.yml ├── lnmp.yml ├── mysql │ ├── files │ ├── handlers │ │ └── main.yml │ ├── tasks │ │ ├── config.yml │ │ ├── install.yml │ │ ├── main.yml │ │ └── service.yml │ ├── templates │ │ ├── my.cnf6.j2 │ │ └── my.cnf7.j2 │ └── vars ├── mysql_roles.yml ├── nginx │ ├── files │ │ ├── nginx-1.12.2.tar.gz │ │ └── nginx-1.16.0.tar.gz │ ├── handlers │ │ └── main.yml │ ├── tasks │ │ ├── config.yml │ │ ├── copypkg.yml │ │ ├── group.yml │ │ ├── install.yml │ │ ├── main.yml │ │ ├── service.yml │ │ └── user.yml │ ├── templates │ │ ├── nginx.conf.j2 │ │ ├── nginx_init.j2 │ │ └── nginx.service.j2 │ └── vars │ └── main.yml ├── nginx_roles.yml ├── php │ ├── files │ │ └── php-5.6.40.tar.gz │ ├── handlers │ │ └── main.yml │ ├── tasks │ │ ├── config.yml │ │ ├── copypkg.yml │ │ ├── group.yml │ │ ├── install.yml │ │ ├── main.yml │ │ ├── service.yml │ │ └── user.yml │ ├── templates │ │ ├── php-fpm.conf.j2 │ │ ├── php-fpm.init.j2 │ │ ├── php-fpm.service.j2 │ │ └── php.ini.j2 │ └── vars │ └── main.yml ├── php_roles.yml └── vhost.conf.j2 18 directories, 42 files
1)單獨某一臺機器安裝nginx
[root@ansible roles]# ansible-playbook -i hostlist nginx_roles.yml --limit 192.168.1.31
2)單獨某一臺機器安裝php
[root@ansible roles]# ansible-playbook -i hostlist php_roles.yml --limit 192.168.1.31
3)單獨某一臺機器安裝mysql
[root@ansible roles]# ansible-playbook -i hostlist mysql_roles.yml --limit 192.168.1.31
4)單獨某一臺機器部署lnmp
[root@ansible roles]# ansible-playbook -i hostlist lnmp.yml --limit 192.168.1.31
5)全部機器部署php
[root@ansible roles]# ansible-playbook php_roles.yml
6)全部機器部署nginx
[root@ansible roles]# ansible-playbook nginx_roles.yml
7)全部機器部署mysql
[root@ansible roles]# ansible-playbook mysql_roles.yml
8)全部機器部署lnmp
[root@ansible roles]# ansible-playbook lnmp.yml
如需源碼及軟件包聯繫我