Ansible用户切换操作

今天在公司批量执行重启服务的操作,使用 ansible 来做,之前已经做了 root 的免密,但是重启服务的操作要用到 www 用户,然后不想写密码和重传 www 用户的密钥,所以想到了两种方案。当然直接使用 www 也可以,这不是对技术的追求嘛,所以研究一下。 一是使用 shell 模块进行 su - www -c "commond" 来执行 二是使用 ansible ...

Ansible_synchronize文件目录同步模块

用来进行被控端与控制端之间的文件同步传输,直接看例子理解即可

使用该模块首先要在控制端和被控端安装有rsync

Ansible---item

很多初学者对于使用ansible的yum模块时,安装多少包,就调用多少次模块,接触过roles方法的可以知道,通过roles目录中的vars来定义ansible变量。

Ansible部署Nginx/Tomcat高可用+Maven私服生成Web项目

Ansible部署Tomcat/Nginx高可用+Maven私服生成Web项目

实验环境

环境中需要用到互联网,推荐每台都使用外网

Ansible4:192.168.1.4

Nginx+Keepalived5:192.168.1.5 VIP:192.168.1.100

Nginx+Keepalived6:192.168.1.6 VIP:192.168.1.100

Tomcat+Maven7:192.168.1.7

Tomcat+Maven8:192.168.1.8

Nexus:192.168.1.1(Maven仓库私服使用现成的)

验证Client使用宿主机即可

Web应用环境

Ansible部署Redis集群

Ansible部署Redis集群

实验环境

Ansible:192.168.1.1(控制端)

Redis4:192.168.1.4(被控端)

生产环境至少需要三台Ansible服务端

实验目的

使用Ansible执行Playbook的方式安装部署Redis集群

模拟公司真实环境架构搭建

模拟公司真实环境架构搭建

现要求公司的整体架构达到高可用

实验环境:

client(Ansible):192.168.1.1/192.168.2.2、网关192.168.2.1

透明代理:192.168.1.4(192.168.2.1)

Varnish反向代理:192.168.1.5、网关192.168.1.4

负载均衡+keepalived:192.168.1.6/192.168.1.7

LNMP:192.168.1.8/192.168.1.9

Iscsi共享存储:192.168.1.10

高可用架构结业.png

Ansible-Roles应用---安装MySQL

Ansible-Roles应用—安装MySQL

实验环境

192.168.1.1:Ansible

192.168.1.4:MySQL

192.168.1.5:MySQL

实验目的

使用Ansible的角色功能,安装MySQL服务

Ansible-Roles应用---安装nginx

Ansible-Roles应用—安装nginx

nginx-role目录结构

/etc/ansible/roles
├── nginx.yml  
# 最终执行的yml文件,以role功能调用roles目录下的nginx角色中的所有main.yml
└── nginx
   ├── defaults
   ├── files
   │   ├── nginx   # nginx启动脚本
   │   └── nginx-1.11.1.tar.gz  # nginx安装包
   ├── handlers
   │   └── main.yml  # 写了nginx的启动yml语句
   ├── meta
   ├── tasks
   │   ├── evir.yml # 做软链并创建程序用户的yml语句
   │   ├── install.yml # 源码编译安装的yml语句
   │   ├── main.yml  # 用来调用tasks目录中的三个yml文件的顺序
   │   └── script.yml  # 复制nginx脚本的yml语句
   ├── templates
   └── vars
       └── main.yml # 所有nginx目录下的yml语句中使用的变量

自动化之Ansible-Roles

Playbook—Roles(角色)和Include语句

简介

上篇文章中写到的playbook使用yml文件来写入一大篇的执行任务,但是在日常的主机管理中,希望一些任务是可以被重复调用的,所以需要重新组织这些文件。

基本上使用include语句引用task文件的方法,可允许你将一个配置策略分解到更小的文件中。使用include语句引用的tasks是将tasks从其他文件拉取过来。因为handlers也是tasks,所以你也可以使用include语句去引用handlers文件

Playbook同样可以使用include引用其他yml文件中的task。这时被引用的task会插入当前的yml文件中来执行,当前的yml文件中就有了一个更长的task列表

可以从理解如何使用include开始,这样会更容易理解roles的概念。

Ansible自动化批量部署LNMP

nginx剧本

需要单独在主控端,写一个nginx启动脚本和php测试页面,用来传文件,nginx用copy,php用模板,用copy也行

[root@localhost ~]# vim nginx.yml 
- hosts: dbserver
  remote_user: root
  tasks:
    - name: install nginx
      unarchive: src=/root/nginx-1.11.1.tar.gz dest=/usr/src
    - name: yum install pcre* openssl*
      yum: name=pcre-devel,openssl-devel,gcc,gcc-c++,zlib-devel
    - name: make install nginx
# 以下表示进行shell操作时,先进入/usr/src/nginx-1.11.1目录
      shell: ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-pcre && make && make install
      args:
        chdir: /usr/src/nginx-1.11.1
    - name: lnfile
      file: src=/usr/local/nginx/sbin/nginx dest=/usr/local/sbin/nginx state=link
    - name: create nginx user
      user: name=nginx create_home=no shell=/sbin/nologin state=present
    - name: nginx start script
      copy: src=/root/nginx dest=/etc/init.d/nginx
    - name: xp
      file: path=/etc/init.d/nginx mode=0755
    - name: add system service
      shell: chkconfig --add nginx
    - name: open system auto started
      shell: systemctl enable nginx
    - name: start nginx
      service: name=nginx state=started

[root@localhost ~]# ansible-playbook nginx.yml 

自动化之Ansible-playbook

Ansible—Playbook(剧本)

剧本文件的结尾:.yml .yaml

基础不好的建议看一下Ansible部署与应用中的Ansible简单操作中的模块的使用

编写剧本格式

注意缩进格式

- hosts: 操作对象
  remote_user: 远程操控时使用的主控端用户名
  tasks:   # 以下为具体执行的任务
    - name: 任务描述信息
      模块名: 任务操作
    - name: 任务描述信息
      模块名: 任务操作
    ...

例:

自动化之Ansible

ansible:提高效率的工具,实现自动化运维

自动化:系统自动化(PXE+KS/PXE+COBBLER)
程序自动化(Ansible/Saltstack/Puppet)
代码自动化(Jenkins)




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0