ansible(2)

get_url模块

get_url: sersync 联网下载软件包
url: 具体的软件在互联网上的路径
dest:下载到具体的目标位置

[root@manager ansible_adhoc]# ansible webservers -m get_url -a "url=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm dest=/tmp"

cron模块

cron: 定时任务模块
	name: 定时任务描述
	job: 任务具体是什么
	minute:分钟
	hour:小时
	day:天
	month:月
	weekday:周

[root@manager ansible_adhoc]# ansible webservers -m cron -a "name='backup' hour=5 minute=0 job='/server/script/client_data_server.sh &>/dev/null'"

重新启用
[root@manager ansible_adhoc]# ansible webservers -m cron -a "name='backup2' hour=5 minute=0 month=2 weekday=7 job='/server/script/client_data_server.sh &>/dev/null' disabled=no"

关闭该cron任务
[root@manager ansible_adhoc]# ansible webservers -m cron -a "name='backup2' hour=5 minute=0 month=2 weekday=7 job='/server/script/client_data_server.sh &>/dev/null' disabled=yes"

firewalld模块

firewalld: 防火墙
	service	:	放行服务
	port		放行端口
	permanent	永久生效
	immediate	临时生效
	state		启用或禁用  ( enable disabled)
	zone		区域
	rich_rule	使用复规则

[root@manager ansible_adhoc]# ansible webservers -m systemd -a "name=firewalld state=started"


service
[root@manager ansible_adhoc]# ansible webservers -m firewalld -a "service=https state=enabled zone=public immediate=yes"
port
[root@manager ansible_adhoc]# ansible webservers -m firewalld -a "port=8080/tcp state=enabled zone=public immediate=yes"


停止防火墙
[root@manager ansible_adhoc]# ansible webservers -m systemd -a "name=firewalld state=stopped"

selinux模块

selinux: 关闭selinux防火墙
- name: Disable SELinux
  selinux:
    state: disabled
[root@manager ansible_adhoc]# ansible webservers -m selinux -a "state=disabled"

Ansible PlayBook

什么是playbook

playbook实现nfs

[root@manager ansible_playbook]# cat exports.j2
/ansible_data 172.16.1.0/24(rw,all_squash,anonuid=888,anongid=888)

[root@manager ansible_playbook]# cat plabybook_nfs.yml


- hosts: webservers
  tasks:

#1.安装
    - name: Installed NFS Server
      yum:
        name: nfs-utils
        state: present

#2.配置
    - name: Configure NFS Server
      copy:
        src: ./exports.j2
        dest: /etc/exports

#3.初始化
    - name: Init NFS Group
      group:
        name: ansible-nfs
        gid: 888

    - name: Init NFS User
      user:
        name: ansible-nfs
        uid: 888
        group: ansible-nfs
        create_home: no
        shell: /sbin/nologin

    - name: Init NFS Create Share Directory
      file:
        path: /ansible_data
        state: directory
        owner: ansible-nfs
        group: ansible-nfs
        mode: 755
        recurse: yes

#4.启动服务
    - name: Started NFS Server
      systemd:
        name: nfs
        state: restarted
        enabled: yes

# 运行
ansible-playbook nfs.yml

playbook实现rsync

[root@manager ansible_playbook]# cat rsyncd.j2
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
################################
[backup]
path = /backup

[root@manager ansible_playbook]# cat rsync.passwd.j2
rsync_backup:ansible



[root@manager ansible_playbook]# cat plabybook_rsync.yml
- hosts: webservers
  tasks:

#1.安装
    - name: Installed Rsync Server
      yum:
        name: rsync
        state: present

#2.配置
    - name: Configure Rsync Server
      copy::
        src: ./rsyncd.j2
        dest: /etc/rsyncd.conf

#3.初始化
    - name: Init Rsync Server Group
      group:
        name: www
        gid: 666

    - name: Init Rsync Server User
      user:
        name: www
        uid: 666
        group: www
        create_home: no
        shell: /sbin/nologin

    - name: Init Rsync Server Virtual User Passwd File
      copy:
        src: ./rsync.passwd.j2
        dest: /etc/rsync.passwd
        owner: root
        group: root
        mode: 0600

    - name: Create Rsync Server Data Directory
      file:
        path: /backup
        state: directory
        owner: www
        group: www
        mode: 0755
        recurse: yes

#4.启动rsync服务
    - name: Started Rsync Server
      systemd:
        name: rsyncd
        state: started
        enabled: yes

playbook编写lap架构

需求如下:

  1. 使用yum安装httpd、php、php-mysql、mariadb、firewalld等
  2. 启动httpd 、 firewalld等服务
  3. 添加防火墙规则、放行http的流量,并永久生效
  4. 使用get_url下载 文件。
使用AnsiblePlaybook方式构建LAMP架构,具体操作步骤如下: 
1.使用yum安装 httpd、php、php-mysql、firewalld等
2.启动httpd、firewalld、等服务
3.添加防火墙规则,放行http的流量,并永久生效
4.使用get_url下载http://fj.xuliangwei.com/public/index.php文件


	注意:不在 7 和 8 上 安装    
	建议:在51服务器上安装
[root@manager ansible_playbook]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.51

[root@manager ansible_playbook]# vim hosts
[db]
172.16.1.51


注意:关闭51服务器的nginx
[root@db01 ~]# systemctl stop  nginx
[root@db01 ~]# systemctl disable nginx


1.将已有的配置拷贝到控制节点,由控制节点来统一管理

[root@manager ansible_playbook]# cat plabybook_httpd_php.yml

- hosts: db
  tasks:

    - name: Installed Httpd PHP
      yum:
        name: httpd
        state: present

    - name: Installed Httpd PHP
      yum:
        name: php
        state: present

    - name: Configure Httpd
      copy:
        src: ./httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
      notify: Restart Httpd Server
      #notify主要是监控该任务是否发生changed状态,如果没有则不作任何处理
      #如果 发生了changed状态,则通知 Restart Httpd Server 这个名称

    - name: Started Httpd Server
      systemd:
        name: httpd
        state: started

    - name: Get URL Index
      get_url:
        url: http://fj.xuliangwei.com/public/index.php
        dest:  /var/www/html/

# notify只能通知给handlers,这是一个特殊的tasks
  handlers:
    - name: Restart Httpd Server
      systemd:
        name: httpd
        state: restarted

playbook编写LNP架构

[root@manager ansible_playbook]# cat nginx.conf.j2
user www;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
    include /etc/nginx/conf.d/*.conf;
}


[root@manager ansible_playbook]# cat  kdc.oldxu.com.conf.j2
server {
	listen 80;
	server_name kdc.oldxu.com;
	root /ansible_code;

	location / {
		index index.php;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}


root@manager ansible_playbook]# cat plabybook_cloud.yml
- hosts: webservers
  tasks:

#1.安装Nginx php
    - name: Installed Nginx PHP7.1
      yum:
        name: "{{ packages }}"
        state: present
      vars:
        packages:
          - nginx
          - php71w
          - php71w-cli
          - php71w-common
          - php71w-devel
          - php71w-embedded
          - php71w-gd
          - php71w-mcrypt
          - php71w-mbstring
          - php71w-pdo
          - php71w-xml
          - php71w-fpm
          - php71w-mysqlnd
          - php71w-opcache
          - php71w-pecl-memcached
          - php71w-pecl-redis
          - php71w-pecl-mongodb

#2.管理nginx主配置文件
    - name: Configure Nginx.conf
      copy:
        src: ./nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart Nginx Server

    - name: Create Group WWW
      group:
        name: www
        gid: 666

    - name: Create User WWW
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: no

#2.配置nginx虚拟主机
    - name: Configure Nginx Virtual Host
      copy:
        src: ./kdc.oldxu.com.conf.j2
        dest: /etc/nginx/conf.d/kdc.oldxu.com.conf
      notify: Restart Nginx Server

#3.根据配置文件初始化
    - name: Init Nginx Virtual Host
      file:
        path: /ansible_code
        state: directory
        owner: www
        group: www
        recurse: yes

#4.拷贝代码
    - name: Copy Code
      unarchive:
        src: ./kodbox.1.09.zip
        dest: /ansible_code/
        owner: www
        group: www

#5.启动服务
    - name: Started Nginx Server
      systemd:
        name: nginx
        state: started
        enabled: yes

#6.只要配置变更则触发重启
  handlers:
    - name: Restart Nginx Server
      systemd:
        name: nginx
        state: restarted

编写代理+nginx+php+redis架构

hosts:
[webservers]
172.16.1.7
172.16.1.8
[redis]
172.16.1.51
[lb]
172.16.1.4

配置redis redis.yml:
- hosts:db
  tasks:
    - name:install redis server
      yum:
        name: redis
        state: present
    - name: configure redis server
      copy:
        src: ./redis.conf.j2
        dest: /etc/redis.conf
      notify: restart redis server
    - name: start redis server
      systemd:
        name: redis
        state: started
        enable: yes
  handlers:
    - name: restart redis server
      systemd:
        name: redis
        state: restarted
web配置:
- hosts: webservers
  tasks:
# 安装
    - name: Installed Nginx PHP7.1
      yum:
        name: "{{ packages }}"
        state: present
      vars:
        packages:
          - nginx
          - php71w
          - php71w-cli
          - php71w-common
          - php71w-devel
          - php71w-embedded
          - php71w-gd
          - php71w-mcrypt
          - php71w-mbstring
          - php71w-pdo
          - php71w-xml
          - php71w-fpm
          - php71w-mysqlnd
          - php71w-opcache
          - php71w-pecl-memcached
          - php71w-pecl-redis
          - php71w-pecl-mongodb
# 管理
   - name: Configure Nginx.conf
      copy:
        src: ./nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart Nginx Server

    - name: Create Group WWW
      group:
        name: www
        gid: 666

    - name: Create User WWW
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: no

# 配置
    - name: Configure Nginx Virtual Host
      copy:
        src: ./phpmyadmin.wenjie.com.conf.j2
        dest: /etc/nginx/conf.d/phpmysdmin.wenjie.com.conf
      notify: Restart Nginx Server
# 管理php.ini
    - name: configure php server php.ini
      copy:
        src: ./php.ini.j2
        dest:/etc/php.ini
      notify: restart php server
    - name: configure php server php.ini
      copy:
        src: ./php_www.conf.j2
        dest: /etc/php-fpm.d/www.conf
      notify: restart php server

# 初始化
    - name: Init Nginx Virtual Host
      file:
        path: /ansible_code
        state: directory
        owner: www
        group: www
        recurse: yes
# 拷贝代码
    - name: Copy Code
      unarchive:
        src: ./phpMyAdmin-5.0.2-all-languages.zip
        dest: /ansible_code/
        owner: www
        group: www
# 启动
    - name: Started Nginx Server
      systemd:
        name: nginx
        state: started
        enabled: yes
    - name: started php server
      systemd:
        name: php-fpm
        state: started
        enabled: yes
# 配置变更则触发重启
  handlers:
    - name: Restart Nginx Server
      systemd:
        name: nginx
        state: restarted
  handlers:
    - name: Restart php Server
      systemd:
        name: php-fpm
        state: restarted

负载均衡配置:
- host: lb
  tasks:
# 安装
    - name: installed nginx server
      yum:
        name: nginx
        state: present

# 配置
    - name: configure nginx.conf
      copy:
        src: ./nginx.conf.j2
        dest: /etc/nginx/nginx.conf
        notify: restart nginx server
    - name: init nginx group
      group: 
        name: www
        gid: 666
    - name: init nginx user
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: no
#负载均衡的虚拟主机
    - name: configure nginx load file
      copy:
        src: ./proxy_phpmyadmin.wenjie.con.conf.j2
        dest: /etc/nginx/conf.d/proxy_phpmyadmin.wenjie.com.conf
      notify: restart nginx srever
# 启动
    - name: systemd nginx server
      systemd:
         name: nginx
         state: started
         enabled: yes
  handlers:
    - name: restart nginx server
      systemd:
        name: nginx
        state: restarted

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值