ansible配置与应用

无法上传图片

一、程序主要文件:

ansible

ansible-playbook

ansible-doc

二、程序发布:

要求:

1.不能影响用户体验

2.系统不能停机

3.不能导致系统故障或造成系统完全不可用。

发布路径:

/webapps/tuangou

/webapps/tuangou-1.1

/webapps/tuangou-1.2.

在调度器上下线一批主机(标记为维护模式)–>关闭服务–>部署新版本–>启动服务–>在调度器上启用这一批主机;

三、相关配置文件

配置文件:

/etc/ansible/ansible.cfg

主机清单:

/etc/ansible/hosts

插件目录:

/usr/share/ansible_plugins/

基于秘钥验证:(1)ssh-keygen -t rsa -P ''   (2)家目录下ssh-copy-id -i .ssh/id_rsa.pub root@10.1.44.2

ansible命令:

Usage:ansible <host-pattern> [options]

四、常用选项:

-m MOD_NAME -a MOD_ARGS

配置

ansible-doc -l列出模块

ansible-doc -s列出简短信息

1.ansible ping 测试主机是否在线

ansible配置与应用

2.command在远程主机执行命令

ansible配置与应用

3.shell:在远程主机调用shell解释器运行命令,支持shell的各种功能,例如“管道”

注意:command和shell模块的核心参数直接为命令本身;而其它模块的参数通常

为“key=value”格式;

4.copy复制ansible主机文件到远程主机

ansible all -m copy -a "src=/etc/fstab dest=/tmp/fstab.ansible"

ansible配置与应用

ansible配置与应用

5.file

用法:

(1)创建目录

-a "path=   state=directory"

(2)创建链接文件

-a "path= src=    state=link"

(3)删除文件

-a "path= state=absent"

修改属主

ansible配置与应用

删除文件

ansible配置与应用

创建链接文件

ansible all -m file -a "path=/tmp/ystab.ansible.link  src=/tmp/ystab.ansible state=link"

ansible配置与应用

6.fetch:从远程一台主机上获取文件

7.cron 计划任务

ansible配置与应用

删除任务ansible all -m cron -a "name='sync time' state=absent"

8.hostname

name

9.yum:安装软件

(1)name= state={present|latest}

(2)

ansible all -m yum -a "name=httpd"

ansible all -m yum -a "name=httpd state=absent"卸载

10.service

name=

state= {started|stoped|restarted}

enabled=  开机是否自启动

ansible配置与应用

11.group

gid    name=    state    system

12.user

group基本组 groups附加组

name=

group=

groups=

comment=

13.setup 用于收集远程的

ansible 10.1.44.4 -m setup 显示键值对

YAML:模板语言

数据结构:

key:value

-item 1

-item 2

-item 3

字典{name:jerry,age:21}

playbook

核心元素:

task:任务,由模块定义的操作的列表;

Variables:变量

Templates:模板,即使用了模板语法的文本文件;

Handlers:由特定条件触发的Tasks;

Roles:角色

playbook的基本组件:

Hosts:运行指定任务的目标主机

remote_user:在远程主机以哪个用户身份执行

sudo_user:非管理员需要拥有sudo权限

tasks:任务列表

模块,模块参数

格式:(1)action:module arguments (2)module:arguments

例子:(1)编辑“剧本”

ansible配置与应用

(2)测试:ansible-playbook –check group.yaml

(3)检测会对哪些主机造成影响

ansible配置与应用

(4)看执行的任务

ansible配置与应用

运行playbook,使用ansible-playbook命令

(1)检测语法

ansible-playbook –syntax-check *.yaml

(1)测试运行

ansible-playbook -C /path/to/playbook.yaml

–list-hosts

–list-tasks

–list-tags

(2)运行

ansible-playbook /path/to/playbook.yaml

-t TAGS,–tags=TAGS

–skip-tags=SKIP_TAGS

–start-at-task=START_AT

例子2:开启远程主机的8080端口

前提要做的是:关闭服务,并卸载。

ansible websrvs -m yum -a "name=httpd state=absent"

(1)剧本文件

ansible配置与应用

(2)准备好要复制至远程主机的文件

(3)测试

ansible配置与应用

(4)结果

ansible配置与应用

例子3:现将本机的配置文件又改回80端口,重新执行了上次的文件后,发现远程主机的端口并未改变。那么要想使得远程主机的监听端口的为80,则还需要进行重启操作。现在引入handlers

配置文件如下

ansible配置与应用

tags:给指定任务一个标识,便于只执行该任务。

-name:NAME

module:arguments

tags:TAG_ID

ansible-playbook –check -t instconf –list-tags web.yaml

ansible-palybook -t instconf web.yaml

ansible配置与应用

Variables:

类型:

内建:

(1)facts:

调用:{{ var_name }}

自定义:

(1)命令行传递;

-e VAR=VALUE

(2)在hosts inventory中为每个主机定义专用变量值;

(a)向不同的主机传递不同的变量:

IP/HOSTNAME variable_name=value

(b)向组内的所有主机传递相同的变量

[groupname:vars]

variable_name=value

(3)在playbook中定义

vars:

-var_name:value

-var_name:value

(4)Inventory还可以使用参数

用于定义ansible远程连接目标主机时的使用的属性,而非传递给playbook的变量;ansible_ssh_host          ansible_ssh_port          ansible_ssh_user

示例1:(1)编辑配置文件vim pkg.yaml

ansible配置与应用

(2)测试,使用-e 来传递变量名

ansible配置与应用

示例2:在文件提前定义变量

ansible配置与应用

此时直接使用测试命令:ansible-playbook –check pkg.yaml不加参数也可以。

若不想使用之前定义的变量名:可以使用-e进行替换变量名。

(2)host文件中定义的内容

ansible配置与应用

ansible配置与应用

ansible配置与应用

Templates:模板

执行模板文件中的脚本,并生产结果数据流,需要使用template模板

template:

-a ""

注意此模板只能使用与playbook

示例1:(1)复制一份nginx的配置文件到/root下。重命名后为nginx.conf.j2,其部分配置内容如下

ansible配置与应用

(2)vim test.yaml

ansible配置与应用

(3)ansible-playbook –check  test.yaml

(4)实际运行后,远程主机的配置文件的结果如下worker_processes 1;

ansible配置与应用

示例2:

– hosts:ngxsrvs

remote_user: root

task:

– name: install nginx package

yum:name=nginx state=latest

– name:install conf file

template:src=/root/nginx.conf.j2 dest=/etc/nginx/nginx.conf

tags:ngxconf

notify:reload nginx service

– name:start nginx service

service:name=nginx state=started enabled=true

handlers:

-name:reload nginx service

shell :/usr/sbin/nginx -s reload

条件测试:

when语句:在task中定义

ansible配置与应用

循环:迭代,需要重复执行的任务

对迭代项的引用,固定变量名为"item",使用with_item属性给定要迭代的元素;

元素:字符串,字典

基于列表给出元素示例:

ansible配置与应用

基于字典列表给元素示例:

ansible配置与应用

角色:roles

以特定的层级目录结构进行组织的tasks、variables、handlers、templates、file

role_name/

file/:存储由copy或script等模块调用的文件;

tasks/:此目录中至少应用一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;

handlers/:此目录中至少应用一个名为main.yml的文件,用于定义各handlers;其它的文件需要由main.yml进行“包含”调用;

vars/:此目录中至少应用一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;

templates/:存储由template模块调用的模板文本;

meta/:此目录中至少应用一个名为main.yml的文件,用于定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;

default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量。

mkdir ./{nginx,memcached,httpd,mysql}/{files,templates,vars,handlers,meta,default,tasks} -pv

原创文章,作者:178babyhanggege,如若转载,请注明出处:http://www.178linux.com/58594

(0)
178babyhanggege178babyhanggege
上一篇 2016-11-14 01:27
下一篇 2016-11-14 08:27

相关推荐

  • 0805随堂练习

    文本处理练习: 1.找出本机ip地址  [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':' |cut -d: -f3  10.1.252.221 2.查看本机分区最大的利用率  [root@localhost ~]# …

    Linux干货 2016-08-07
  • 单用户模式破解密码与密码的加密

    当你坐在一台CentOS 6主机前,但是却不知道密码,要怎样破解掉密码进入系统呢? 答案很简单: 1、启动系统,当出现如下界面时,按任意键 2、你会看到这个画面 3、敲击“a”键,执行modifiy the kernel arguments 4、键入“1”键,进入单用户模式 5、至此,你已经成功进入系统,并修改了密码! 是不是觉得Centos6的系统这样安全…

    Linux干货 2016-09-13
  • shell脚本2

    使用read命令来接受输入 使用read来把输入值分配给一个或多个shell变量 read后面跟变量,回车输入内容,就可以把输入的内容赋给变量 -p指定要显示的提示 -s 静默输入,一般用于密码 输入的内容不显示 -n N 指定输入的字符长度N 当输入的内容达到了5个字符会直接结束输入 -d‘字符’ 输入结束符 把!作为了结束符,在输入内容时,当输入!会直接…

    2017-08-11
  • 用户,组和权限管理 基础命令整理

    安全3A任何一个安全策略都应该有Authentication(认证)、Authentication(授权)、Accouting|Audition(审计)这三个措施。 用户(User)Linux用户是安全3A中的Authentication(认证)措施。用户在登录时,系统会检查用户输入的用户名和密码。如果用户输入的用户名和密码匹配,会根据用户信息给用户分配一个…

    Linux干货 2017-03-16
  • 从Linux小白到大牛——与狼共舞的日子12(上)

    马哥教育网络班21期+第12周课程练习 1、请描述一次完整的http请求处理过程; 1)建立或处理连接:客户端发送http请求报文,服务器端接收或拒绝请求; 2)接收请求:服务器端接收来自客户端对某些资源的请求; 3)处理请求:服务器端解析客户端请求报文,获取客户端请求的资源及请求方法等信息; 4)访问资源:服务器端获取客户端请求的资源; 5)构建响应报文;…

    Linux干货 2016-12-26
  • 第二十周作业

    一、用keepalived实现nginx与lvs的高可用集群 keepalived+nginx高可用环境:node1:    192.168.31.233     keepalived+nginx masternode2:    192.168.31.72      k…

    2017-07-22