ansible详解(一)----小试牛刀

ansible安装

[[email protected] ~]# yum install ansible -y

定义主机与组

[[email protected] ~]# vim /etc/ansible/hosts  #添加主机,并在所配置的主机上与ansible建立互信
192.168.116.138
192.168.116.139
192.168.116.139:7022 #定义一个ssh端口为7022的主机
juserver ansible_ssh_port=22  ansible_ssh_host=192.168.116.25 #利用别名定义一个主机,使用的时候直接使用juserver这个别名即可
[webserver]   #建立分组
192.168.116.2
192.168.116.3
192.168.116.4
www[01:50].example.com  #支持通配符匹配www01 www02 ...www50
[dbserver]
192.168.116.5
192.168.116.6
db-[a:f].example.com  #支持字母匹配a b c...f
[weballserver:children] #组嵌套,不过这个只能用在playbook中,ansible命令行中使用不了
webserver
dbserver
[myserver]
192.168.116.7 http_port=8000 maxRequestsPerChild=808 #可以为每个主机单独指定一些变量,这些变量可以在playbooks中使用
192.168.116.8 http_port=303 maxRequestsPerChild=909
[weixinserver]
192.168.116.9
192.168.116.10
[weixinserver:vars]  #也可以为一个组指定变量,组内每个主机都可以使用该变量
ntp_server=ntp.weixinserver.example.com
proxy=proxy.weixinserver.example.com

ansible保留主机变量

#ansible_ssh_host:指定主机别名对应的真实IP,如:251 ansible_ssh_host=192.168.116.251,随后连接该主机无须指定完整IP,只需指定251 就行
#ansible_ssh_port:指定连接到这个主机的ssh 端口,默认22
#ansible_ssh_user:连接到该主机的ssh用户
#ansible_ssh_pass:连接到该主机的ssh密码(连-k 选项都省了),安全考虑还是建议使用私钥或在命令行指定-k 选项输入
#ansible_sudo_pass:sudo 密码
#ansible_sudo_exe(v1.8+的新特性):sudo 命令路径
#ansible_connection:连接类型,可以是local、ssh 或paramiko,ansible1.2 之前默认为paramiko
#ansible_ssh_private_key_file:私钥文件路径
#ansible_shell_type:目标系统的shell类型,默认为sh,如果设置csh/fish,那么命令需要遵循它们语法
#ansible_python_interpreter:python 解释器路径,默认是/usr/bin/python,但是如要要连freeBSD系统的话,就需要该指令修改python路径
#ansible_*_interpreter:这里的"*"可以是ruby或perl或其他语言的解释器,作用和ansible_python_interpreter类似

分离主机和组的变量定义

#为host 和group 定义一些比较复杂的变量时(如array、hash),可以用单独文件保存host和group 变量,以YAML 格式书写变量,避免都写在hosts 文件显得混乱,如果hosts 文件路径为:
/etc/ansible/hosts
#则host 和group 变量目录结构:
/etc/ansible/host_vars/all   #host_vars 目录用于存放host 变量,all 文件对所有主机有效
/etc/ansible/host_vars/foosball  #文件foosball 要和hosts 里面定义的主机名一样,表示只对foosball 主机有效
/etc/ansible/group_vars/all  #group_vars 目录用于存放group 变量,all 文件对所有组有效
/etc/ansible/group_vars/raleigh  #文件raleigh 要和hosts 里面定义的组名一样,表示对raleigh 组下的所有主机有效
#这里/etc/ansible/group_vars/raleigh 格式如下,YAML 格式要求:
ntp_server: acme.example.org    #变量名:变量值
database_server: storage.example.org

主机匹配方式

#表示通配inventory 中的所有主机
all
‘*‘ #星号必须引起来
#也可以指定具有规则特征的主机或者主机名
one.example.com
one.example.com:two.example.com
192.168.1.50
192.168.1.*
#意思是这两个组中的所有主机
webservers:dbservers
#非模式匹配:表示在webservers 组不在phoenix 组的主机
webservers:!phoenix
#交集匹配:表示同时都在webservers 和staging 组的主机
webservers:&staging

命令行简单举例
#ansible <pattern_goes_here> -m <module_name> -a <arguments>

[[email protected] ~]# ansible 192.168.116.138 -m ping   #对单台主机测试ping
[[email protected] ~]# ansible all -m ping   #对/etc/ansible/hosts中所有主机测试ping
[[email protected] ~]# ansible webserver -a "/bin/echo hello" #运行命令
[[email protected] ~]# ansible all -a "uptime"
[[email protected] ~]# ansible dbserver -m copy -a "src=/tmp/ansible dest=/tmp/ansible_1"  #copy文件
[[email protected] ~]# ansible 192.168.116.138 -m file -a "dest=/tmp/ansible_1 mode=600 owner=ju group=ju" #改变文件属性
[[email protected] ~]# ansible 192.168.116.138 -m service -a "name=httpd state=running" #启动服务,或者放到开机启动的同时运行
[[email protected] ~]# ansible all -m setup  #打印主机的清单,将输出用于描述每一台主机的JSON对象,其中包括总体内存、已使用内存、CPU、网络、磁盘信息、操作系统版本以及内核版本等等。

查看模块帮助

[[email protected] ansible]# ansible-doc ping
> PING
  A trivial test module, this module always returns `pong‘ on  successful contact. It does not make sense in playbooks, but it is  useful from `/usr/bin/ansible‘
# Test ‘webservers‘ status 
ansible webservers -m ping
时间: 2024-11-08 22:52:48

ansible详解(一)----小试牛刀的相关文章

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

自动化运维工具——ansible详解(一)

ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来

Ansible详解(一)

一.运维相关概念介绍二.ansible介绍三.ansible命令四.ansible常用模块五.ansible配置文件详解 一.运维相关概念介绍运维:Opreations1.系统安装:    bare metal:pxe(pre execute enviroment),cobbler    virtual machine:    pxe:依赖于网卡自身的功能(dhcp_client,FS_client),以及网络中预先提供的服务        FS_client:加载bootloader文件,文件

Linux Ansible详解

作用: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. 特性 1.no agent: 不需要在被管控主机上安装任何软件 2.no server: 无服务器端,使用时直接运行命令即可 3.modules in any languages:基于模块工作,可使用任意语言开发模块, 4.yaml,not code:使用yaml语言定制剧本pl

自动化运维之ansible详解

1.ansible安装以及配置认证 ansible也是有Python开发的. ansible特点: 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook 支持sudo 又提供UI(浏览器图形化)www.ansible.com/tower 10台主机以内免费 开源UI http://github.com/alaxli/ansible_ui 文档http://download.csdn.net/detail/li

ansible详解

ansible: 特性: 模块化,调用特定的模块来完成特定任务: 基于Python语言实现,由Paramiko,PyYAML和Jinja2三个关键模块实现: 部署简单,agentless: 主从模式: 支持自定义模块: 支持playbook (支持幂等性) 组成部分: ansible core host inventory connection plugins modules: custom modules; core modules; playbooks 配置文件: 主配置文件:/etc/an

ansible详解(二)----常用模块

ansible常用模块并行性和shell命令command|script|shell #重启webservers主机组的所有机器,每次重启10 台 ansible webservers -a "/sbin/reboot" -f 10 #以ju 用户身份在webservers组的所有主机运行foo 命令 ansible webservers -a "/usr/bin/foo" -u ju #以ju 用户身份sudo 执行命令foo(--ask-sudo-pass (-

Ansible详解(二)

Ansible系列命令 Ansible系列命令有如下: ansible:这个命令是日常工作中使用率非常高的命令之一,主要用于临时一次性操作: ansible-doc:是Ansible模块文档说明,针对每个模块都有详细的用法说明和应用案例介绍: ansible-galaxy:可以简单的理解为Github或PIP的功能,通过ansible-galaxy,我们可以下载安装优秀个Roles: ansible-playbook:是日常应用中使用频率最高的命令,其工作机制是,通过读取预先编写好的playbo

自动化运维工具ansible详解

 ll  本文导航    · ansible的基础介绍   · ansible的安装与配置   · ansible的简单应用   · YAML介绍及语法   · ansible-playbooks(剧本)  ll  要求  掌握ansible基本应用与playbooks. 1.ansible介绍 ansible是一款基于python开发的自动化运维工具,它结合了puppet.cfengine.func.chef.fabric等工具的优点,实现了批量系统配置.批量部署应用程序及批量部署命令   a