Ansible-playbook部署lamp

[root@master ~]# cd /opt/code/
[root@master code]# ls
ansible.cfg  inventory  modules  project
[root@master code]# cd modules/
[root@master modules]# ls
application  database  init  web
[root@master modules]# cd init/
[root@master init]# ls
basepkg.yml  close_service.yml  main.yml  selinux.yml  yum
[root@master init]# cat basepkg.yml 
- name: install base package
  yum:
     name:
       - tree
       - psmisc
       - openssl
       - openssl-devel
       - telnet
       - iotop
       - sysstat
       - wget
       - dos2unix
       - lsof
       - net-tools
       - vim-enhanced
       - zip
       - unzip
       - bzip2
       - bind-utils
       - gcc
       - gcc-c++
       - glibc
       - make
       - autoconf
     state: present
[root@master init]# cat close_service.yml 
- name: close service {
  { service_name }}
  service:
    name: '{
  { service_name }}'
    state: stopped
    enabled: no
[root@master init]# cat main.yml 
- name: close firewalld service
  import_tasks: close_service.yml
  vars: 
    service_name: firewalld

- name: close selinux
  import_tasks: selinux.yml

- name: config yum
  import_tasks: yum/main.yml

- name: config base packages
  import_tasks: basepkg.yml
[root@master init]# cat selinux.yml 
- name: set selinux to disabled
  selinux:
    state: disabled
[root@master init]# ls
basepkg.yml  close_service.yml  main.yml  selinux.yml  yum
[root@master init]# cd yum/
[root@master yum]# ls
files  main.yml
[root@master yum]# cat main.yml 
- name: if centos-{
  { ansible_facts['distribution_major_version'] }}.repo esxist
  shell: ls /etc/yum.repos.d/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
  register: result
  changed_when: false

- name: delete default yum
  shell: 'rm -rf /etc/yum.repos.d/*'
  when: result['rc'] != 0

- name: copy centos-{
  { ansible_facts['distribution_major_version'] }}.repo to dest
  copy:
    src: files/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
    dest: /etc/yum.repos.d/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
  when: >
    (ansible_facts['distribution'] == 'CentOS')
    or
    (ansible_facts['distribution'] == 'RedHat')
[root@master yum]# cd files/
[root@master files]# ls
centos-7.repo  centos-8.repo
[root@master files]# cd ..
[root@master yum]# cd ..
[root@master init]# cd ..
[root@master modules]# cd ..
[root@master code]# ls
ansible.cfg  inventory  modules  project
[root@master code]# cd project/
[root@master project]# ls
playbook.yml
[root@master project]# cat playbook.yml 
---
- hosts: webservers
  ignore_errors: yes
  tasks:
    - import_tasks: ../modules/init/main.yml
    - import_tasks: ../modules/web/apache/install.yml
[root@master project]# 
[root@master project]# 
[root@master project]# cd ..
[root@master code]# 
[root@master code]# 
[root@master code]# 
[root@master code]# ls
ansible.cfg  inventory  modules  project
[root@master code]# cd modules/
[root@master modules]# ls
application  database  init  web
[root@master modules]# cd web/
[root@master web]# ls
apache  nginx
[root@master web]# cd apache/
[root@master apache]# ls
files  install.yml  vars
[root@master apache]# cat install.yml 
- name: create user apache
  user:
    name: apache
    shell: /sbin/nologin
    system: yes
    create_home: no
    state: present

- name: install depend package
  yum:
    name:
      - openssl-devel
      - pcre-devel
      - expat-devel
      - libtool
    state: present

- name: provides install package 
  copy:
   src: '{
  { item }}'
   dest: /tmp/
  loop:
   - files/apr-1.7.0.tar.gz
   - files/apr-util-1.6.1.tar.gz
   - files/httpd-2.4.54.tar.gz

- name: install apache
  script: files/install.sh

[root@master apache]# cd files/
[root@master files]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz  install.sh
[root@master files]# cat install.sh 
#!/bin/bash

cd /tmp/
rm -rf apr-1.7.0 apr-util-1.6.1 httpd-2.4.54
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.54.tar.gz
sed -i '/$RM "$cfgfile"/d' apr-1.7.0/configure

cd apr-1.7.0
./configure --prefix=/usr/local/apr && \
	make && make install && \
cd ../apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
	make && make install && \
cd ../httpd-2.4.54
./configure --prefix=/usr/local/apache \
	--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
[root@master files]# cd ..
[root@master apache]# 
[root@master apache]# ls
files  install.yml  vars
[root@master apache]# cd vars/
[root@master vars]# ls
main
[root@master vars]# 

apache安装

[root@master opt]# pwd
/opt
[root@master opt]# mkdir code
[root@master opt]# cd code/
[root@master code]# 
[root@master code]# cp /opt/project/ansible.cfg  .
[root@master code]# cp /opt/project/inventory  .
[root@master code]# ls
ansible.cfg  inventory
[root@master code]# 
[root@master code]# vim inventory 
[webservers]
web1
[root@master code]# vim  /etc/hosts
 192.168.119.157  web1


#创建模块目录
[root@master code]# mkdir modules
[root@master code]# ls
ansible.cfg  inventory  modules
[root@master code]# cd modules/
[root@master modules]# mkdir web
[root@master modules]# ls
web
[root@master modules]# 



[root@master code]# cd modules/web/
[root@master web]# mkdir apache
[root@master web]# ls
apache
[root@master web]# cd apache/
[root@master apache]# touch install.yml
[root@master apache]# ls
install.yml
[root@master apache]# 

[root@master apache]# vim install.yml 
[root@master apache]# cat install.yml 
- name: create user apache
  user:
    name: apache
    shell: /sbin/nologin
    system: yes
    create_home: no
    state: present

- name: install depend package
  yum:
    name: '{
  { apache_depend_pkg }}'
    state: present      

[root@master apache]# 

[root@master apache]# mkdir vars
[root@master apache]# vim vars/main
[root@master apache]# cat vars/main 
apache_depend_pkg:
  - openssl-devel
  - pcre-devel
  - expat-devel
  - libtool
  - gcc
  - gcc-c++
  - make

[root@master apache]# 

[root@master code]# cd modules/
[root@master modules]# ls
web
[root@master modules]# mkdir init
[root@master modules]# cd init/
[root@master init]# vim firewalld.yml
[root@master init]# mv firewalld.yml close_service.yml
[root@master init]# cat close_service.yml 
- name: close service {
  { service_name }}
  service:
    name: '{
  { service_name }}'
    state: stopped
    enabled: no    
[root@master init]# vim main.yml
[root@master init]# cat main.yml 
- name: close_service.yml
  import_tasks: close_service.yml
  vars: 
    service_name: firewalld
[root@master init]# 









#创建任务目录
[root@master code]# cd project/
[root@master project]# vim playbook.yml
[root@master project]# cat playbook.yml 
---
- hosts: web1
  tasks:
    - import_tasks: ../modules/init/main.yml       
[root@master project]# 
[root@master project]# cd ..
[root@master code]# cd modules/init/
[root@master init]# ls
close_service.yml  main.yml
[root@master init]# vim selinux.yml
[root@master init]# cat selinux.yml 
- name: set selinux to disabled
  selinux: 
    state: disabled
[root@master init]# 
[root@master init]# vim main.yml 
[root@master init]# cat main.yml 
- name: close_service.yml
  import_tasks: close_service.yml
  vars: 
    service_name: firewalld

- name: close selinux
  import_tasks: selinux.yml  
[root@master init]# 



#配置阿里yum源
[root@master init]# mkdir yum 
[root@master init]# cd yum/
[root@master yum]# mkdir files
[root@master yum]# ls
files
[root@master yum]# cd files/
[root@master files]# curl -o centOS-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0   6436      0 --:--:-- --:--:-- --:--:--  6436
[root@master files]# curl -o centOS-8.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0   5081      0 --:--:-- --:--:-- --:--:--  5081
[root@master files]# ls
centOS-7.repo  centOS-8.repo
[root@master files]# 
[root@master files]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' *.repo
[root@master files]# 



[root@master files]# cd ..
[root@master yum]# vim main.yml
[root@master yum]# cat main.yml 
- name: delete default yum
  shell: 'rm -rf /etc/yum.repos.d/*' 
[root@master yum]# 


[root@master code]# vim modules/init/main.yml 
[root@master code]# cat modules/init/main.yml 
- name: close_service.yml
  import_tasks: close_service.yml
  vars: 
    service_name: firewalld

- name: close selinux
  import_tasks: selinux.yml  

- name: config yum
  import_tasks: yum/main.yml  
[root@master code]# 
[root@master code]# tree
.
├── ansible.cfg
├── inventory
├── modules
│   ├── init
│   │   ├── close_service.yml
│   │   ├── main.yml
│   │   ├── selinux.yml
│   │   └── yum
│   │       ├── files
│   │       │   ├── centOS-7.repo
│   │       │   └── centOS-8.repo
│   │       └── main.yml
│   └── web
│       └── apache
│           ├── install.yml
│           └── vars
│               └── main
└── project
    └── playbook.yml

8 directories, 11 files
[root@master code]# 
[root@master code]# ansible-playbook project/playbook.yml 



[root@master files]# cd ..
[root@master yum]# vim main.yml
[root@master yum]# cat main.yml 
- name: delete default yum
  shell: 'rm -rf /etc/yum.repos.d/*' 
[root@master yum]# 
[root@master yum]# vim main.yml 
[root@master yum]# cat main.yml 
- name: if centos-{
  { ansible_facts['distribution_major_version'] }}.repo esxist
  shell: ls /etc/yum.repos.d/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
  register: result

- name: delete default yum
  shell: 'rm -rf /etc/yum.repos.d/*' 
  when: result['rc'] != 0  
[root@master yum]# 
[root@master code]# ansible-playbook project/playbook.yml 

[root@master code]# vim project/playbook.yml 
[root@master code]# cat project/playbook.yml 
---
- hosts: web1
  ignore_errors: yes
  tasks:
    - import_tasks: ../modules/init/main.yml       
      
[root@master code]# 
[root@master code]# ansible-playbook project/playbook.yml 



[root@master yum]# vim main.yml 
[root@master yum]# cat main.yml 
- name: if centos-{
  { ansible_facts['distribution_major_version'] }}.repo esxist
  shell: ls /etc/yum.repos.d/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
  register: result

- name: delete default yum
  shell: 'rm -rf /etc/yum.repos.d/*' 
  when: result['rc'] != 0  
 
- name: copy centos-{
  { ansible_facts['distribution_major_version'] }}.repo to dest
  copy: 
    src: files/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
    dest: /etc/yum.repos.d/centos-{
  { ansible_facts['distribution_major_version'] }}.repo
  when: >
    (ansible_facts['distribution'] == 'CentOS') 
    or
    (ansible_facts['distribution'] == 'RedHat')

[root@master yum]# 
[root@master code]# ansible-playbook project/playbook.yml



[root@master yum]# cd ..
[root@master init]# ls
close_service.yml  main.yml  selinux.yml  yum
[root@master init]# vim basepkg.yml
[root@master init]# cat basepkg.yml 
- name: install base package
  yum:
    name:    
      - tree
      - psmisc
      - openssl
      - openssl-devel
      - telnet
      - iotop
      - sysstat
      - wget
      - dos2unix
      - lsof
      - net-tools
      - vim-enhanced
      - zip
      - unzip
      - bzip2
      - bind-utils
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf  
    state: present   
[root@master init]# 



[root@master init]# ls
basepkg.yml  close_service.yml  main.yml  selinux.yml  yum
[root@master init]# vim main.yml 
[root@master init]# cat main.yml 
- name: close_service.yml
  import_tasks: close_service.yml
  vars: 
    service_name: firewalld

- name: close selinux
  import_tasks: selinux.yml  

- name: config yum
  import_tasks: yum/main.yml  

- name: config base packages
  import_tasks: basepkg.yml  
[root@master init]# 




[root@master init]# cd ..
[root@master modules]# ls
init  web
[root@master modules]# cd web/
[root@master web]# ls
apache
[root@master web]# cd apache/
[root@master apache]# ls
install.yml  vars
[root@master apache]# vim install.yml 
[root@master apache]# cat install.yml 
- name: create user apache
  user:
    name: apache
    shell: /sbin/nologin
    system: yes
    create_home: no
    state: present

- name: install depend package
  yum:
    name: 
      - openssl-devel
      - pcre-devel
      - expat-devel
      - libtool
      - gcc 
      - gcc-g++
      - make
    state: present
[root@master apache]# 

[root@master code]# tree
.
├── ansible.cfg
├── inventory
├── modules
│   ├── init
│   │   ├── basepkg.yml
│   │   ├── close_service.yml
│   │   ├── main.yml
│   │   ├── selinux.yml
│   │   └── yum
│   │       ├── files
│   │       │   ├── centOS-7.repo
│   │       │   └── centOS-8.repo
│   │       └── main.yml
│   └── web
│       └── apache
│           ├── install.yml
│           └── vars
│               └── main
└── project
    └── playbook.yml

8 directories, 12 files
[root@master code]# vim project/playbook.yml 
[root@master code]# cat project/playbook.yml 
---
- hosts: web1
  ignore_errors: yes
  tasks:
    - import_tasks: ../modules/init/main.yml       
    - import_tasks: ../modules/web/install.yml  
[root@master code]# 


[root@master apache]# pwd
/opt/code/modules/web/apache
[root@master apache]# ls
install.yml  vars
[root@master apache]# mkdir files
[root@master apache]# cd files/
[root@master files]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@master files]# cd ..
[root@master apache]# 


[root@master apache]# vim install.yml 
[root@master apache]# cat install.yml 
- name: create user apache
  user:
    name: apache
    shell: /sbin/nologin
    system: yes
    create_home: no
    state: present

- name: install depend package
  yum:
    name: 
      - openssl-devel
      - pcre-devel
      - expat-devel
      - libtool
      - gcc 
      - gcc-g++
      - make
    state: present
    
- name: provides install package
  copy:
    src: '{
  { item }}'
    dest: /tmp/
  loop:
    - files/apr-1.7.0.tar.gz
    - files/apr-util-1.6.1.tar.gz
    - files/httpd-2.4.54.tar.gz
[root@master apache]# 
[root@master code]# ansible-playbook project/playbook.yml 



[root@master apache]# vim install.yml 
[root@master apache]# cat install.yml 
- name: create user apache
  user:
    name: apache
    shell: /sbin/nologin
    system: yes
    create_home: no
    state: present

- name: install depend package
  yum:
    name: 
      - openssl-devel
      - pcre-devel
      - expat-devel
      - libtool
      - gcc 
      - gcc-g++
      - make
    state: present
    
- name: provides install package
  copy:
    src: '{
  { item }}'
    dest: /tmp/
  loop:
    - files/apr-1.7.0.tar.gz
    - files/apr-util-1.6.1.tar.gz
    - files/httpd-2.4.54.tar.gz

- name: install apache
  script: files/install.sh  



[root@master apache]# vim files/install.sh
[root@master apache]# cat files/install.sh 
#!/bin/bash

cd /tmp/
rm -rf apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.54.tar.gz
sed -i '/$RM "$cfgfile"/d' apr-1.7.0/configure
[root@master apache]# 


[root@master apache]# vim files/install.sh
[root@master apache]# cat files/install.sh 
#!/bin/bash

cd /tmp/
rm -rf apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.54.tar.gz
sed -i '/$RM "$cfgfile"/d' apr-1.7.0/configure
cd apr-1.7.0
./configure --prefix=/usr/local/apr  && \
	make && make install && \
cd ../apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
	make && make install && \
cd ../httpd-2.4.54
./configure --prefix=/usr/local/apache \ 
	 --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 && \
	

你可能感兴趣的:(ansible,linux,运维)