ansible基础

特点:

模块化:调用特定的模块,完成特定任务;

基于Python语言实现,由Paramiko,PyYAML和Jinja2三个关键模块;

部署简单:agentless;

支持自定义模块;

支持playbook;

 

安装:

需要epel源

一个可用的epel源

cat /etc/yum.repos.d/cs.repo

[EPEL]

name=EPEL

baseurl=https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/

enabled=1

gpgcheck=0

 

yum install ansible

 

配置文件:

/etc/ansible/ansible.cfg

主机清单:/etc/ansible/hosts

用到的命令:

ansible  ansible-playbook  ansible-doc

 

ansible命令格式:

ansible HOST_PATTERN -m MOD_NAME -a MOD_ARGS -f FORKS

  HOST_PATTERN  #要执行的主机,在/etc/ansible/hosts中定义,all为全部,格式可为单个主机(ip,域名),组

  -m MOD_NAME  #使用那个模块

  -a MOD_ARGS  #模块对应参数

  -f FORKS  #并行执行的主机数

 

 

ansible-playbook命令格式

ansible-playbook  file.yaml  #file.yaml为剧本文件

参数:

  -C  干跑,不做任何改变

  --list-hosts  展示要执行的主机

  --list-tags  展示全部的标签

  --list-tasks  展示要执行的任务

  --syntax-check  对剧本进行语法检查,并不执行

  -f FORKS  指定并行任务数

 

ansible-doc命令格式

ansible-doc -s MOD_NAME  #查看指定模块的参数说明

ansible-doc -l  #查看所有模块

 

ansible

常用模块:ping,yum,server,copy,command,script,cron,fetch,file,shell

ping 测试主机是否在线

yum 管理远程主机上的包,如安装卸载升级等

server 管理远程主机上的服务,如开启,停止等

copy  复制本地文件到远程主机上

       参数:src  dest  content  dest  owner, group, mode,

command  在远程主机上执行命令并返回结果

script  在远程主机上执行本地的脚本

cron  在远程主机上执行定时任务

       参数:minute, day, month, weekday, hour, job, name, state,

fetch  从远程主机获取文件

file  管理文件和修改文件属性,如属组,权限等

shell  在远程主机的shell进程下运行命令,支持管道等

setup: 收集有关远程主机的信息

template:基于模版方式生成一个文件复制到远程主机

 

示例

测试所有主机连通性

ansible all -m ping

指定ip安装httpd,版本最新

ansible 192.168.181.3 -m yum -a ‘name=httpd state=latest’

指定主机组,服务httpd,重启

ansible host1 -m server -a ‘name=httpd state=restarted’

指定主机组,复制本地文件到远程

ansible host1,host2 -m copy -a ‘src=/root/tmp.txt dest=/tmp/tmp.txt’

修改远程文件内容

ansible host2 -m copy -a ‘content=helloworld dest=/tmp/tmp.txt’

在指定主机上执行ifconfig

ansible node1.cn -m command -a ‘ifconfig’

在全部主机上执行本地脚本/root/cs.sh

ansible all -m script -a ‘/root/cs.sh’

在指定主机上执行定时任务

ansible 192.168.181.31 -m cron -a "minute=*/2 name=cron1 state=present job='echo hello>>/root/tmp.txt'"

在全部主机上拷贝文件到本地

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

在指定主机上修改文件权限

ansible 192.168.181.31 -m file -a 'path=/root/ls.txt mode=777'

在指定主机上执行脚本并返回结果

ansible 192.168.181.31 -m shell -a 'cat /etc/fstab|grep ^#'

ansilbe 192.168.181.31 -m setup

~]#cat tmp-cs.j2

hello {{ var-cs }}

ansible 192.168.181.31 -e var-cs=world -m template -a 'src=/root/tmp-cs.j2 dest=/tmp/tmp-cs'  #no,需要使用ansible-playbook

Playbok核心元素

hosts  主机

tasks  任务列表

variables  ansible预定义变量和自定义变量

templates  包含模版语法的文本文件

handlers  特定条件出发的任务

 

roles  角色,由hosts,tasks,variables,templates,handlers组成的角色,自定义或者系统角色

 

posted on 2025-05-10 17:51  赛博狗尾草  阅读(18)  评论(0)    收藏  举报

导航