Ansible(二) - 配置及命令简介
Ⅰ. Ansible Inventory Hosts文件配置
# mkdir /etc/ansible
# touch /etc/ansible/hosts
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.6 client
192.168.137.5 server
192.168.137.7 web1
192.168.137.8 web2
# cat /etc/ansible/hosts
[local]
server
client
[web]
web[1:2]
192.168.13.14:52022
jumpter ansible_port=5555 ansible_host=192.168.1.50 ansible_user=xxx ansible_ssh_pass="xxxx"
我这里就添加了两个主机组:local、web,local主机组两台主机,web主机组4台主机。
这里你可以把同一类主机或者是想统一管理的主机放在一个主机组里。
# 其他ansible2.3 inventory参数举例
General for all connections:
- ansible_host
- The name of the host to connect to, if different from the alias you wish to give to it.
- ansible_port
- The ssh port number, if not 22
- ansible_user
- The default ssh user name to use.
Specific to the SSH connection:
- ansible_ssh_pass
- The ssh password to use (never store this variable in plain text; always use a vault. See Variables and Vaults)
- ansible_ssh_private_key_file
- Private key file used by ssh. Useful if using multiple keys and you don’t want to use SSH agent.
- ansible_ssh_common_args
- This setting is always appended to the default command line for sftp, scp, and ssh. Useful to configure a
ProxyCommand
for a certain host (or group). - ansible_sftp_extra_args
- This setting is always appended to the default sftp command line.
- ansible_scp_extra_args
- This setting is always appended to the default scp command line.
- ansible_ssh_extra_args
- This setting is always appended to the default ssh command line.
- ansible_ssh_pipelining
- Determines whether or not to use SSH pipelining. This can override the
pipelining
setting inansible.cfg
. - ansible_ssh_executable (added in version 2.2)
- This setting overrides the default behavior to use the system ssh. This can override the
ssh_executable
setting inansible.cfg
.
Privilege escalation (see Ansible Privilege Escalation for further details):
- ansible_become
- Equivalent to
ansible_sudo
oransible_su
, allows to force privilege escalation - ansible_become_method
- Allows to set privilege escalation method
- ansible_become_user
- Equivalent to
ansible_sudo_user
oransible_su_user
, allows to set the user you become through privilege escalation - ansible_become_pass
- Equivalent to
ansible_sudo_pass
oransible_su_pass
, allows you to set the privilege escalation password (never store this variable in plain text; always use a vault. See Variables and Vaults) - ansible_become_exe
- Equivalent to
ansible_sudo_exe
oransible_su_exe
, allows you to set the executable for the escalation method selected - ansible_become_flags
- Equivalent to
ansible_sudo_flags
oransible_su_flags
, allows you to set the flags passed to the selected escalation method. This can be also set globally inansible.cfg
in thesudo_flags
option
Remote host environment parameters:
- ansible_shell_type
- The shell type of the target system. You should not use this setting unless you have set the
ansible_shell_executable
to a non-Bourne (sh) compatible shell. By default commands are formatted usingsh
-style syntax. Setting this tocsh
orfish
will cause commands executed on target systems to follow those shell’s syntax instead. - ansible_python_interpreter
- The target host python path. This is useful for systems with more than one Python or not located at /usr/bin/python such as *BSD, or where /usr/bin/python is not a 2.X series Python. We do not use the /usr/bin/env mechanism as that requires the remote user’s path to be set right and also assumes the python executable is named python, where the executable might be named something like python2.6.
- ansible_*_interpreter
- Works for anything such as ruby or perl and works just like
ansible_python_interpreter
. This replaces shebang of modules which will run on that host.
New in version 2.1.
- ansible_shell_executable
- This sets the shell the ansible controller will use on the target machine, overrides
executable
inansible.cfg
which defaults to /bin/sh. You should really only change it if is not possible to use /bin/sh (i.e. /bin/sh is not installed on the target machine or cannot be run from sudo.).
Examples from an Ansible-INI host file:
Ⅱ. Ansible配置及命令详解
· module_name
Ansible将管理功能分成一个个模块,默认是'command'模块,但是command模块不支持shell变量、管道、配额。所以,执行带有管道的命令,可以使用'shell'模块。
· pattern
如果没有提供'hosts'节点,这是playbook要通信的默认主机组,默认值是对所有主机通信。
1. 指定一组连续的机器:ansible 192.168.1.* -m ping (指定192.168.1/28网段所有机器)
2. 指定一组不相关机器:ansible abcd.com:efgh.com -m ping (同样适用于组连接)
3. 指定在local组,不在web组的机器: local:!web (从左到右依次匹配)
4. 指定在local组,也在web组的机器:local:&web
-a 指定传入模块的参数
-C -D 一起使用,检查hosts规则文件的修改
-l 限制匹配规则的主机数
--list-hosts 显示所有匹配规则的主机
-m -M指定所使用的模块和模块的路径
--syntax-check 检查语法
-v 显示详细日志
Ⅲ. Ansible命令举例
1> 执行第一条ansible命令
# ansible local -m ping #使用ping模块
server | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
} client | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
}
由于ansible是基于ssh,这里我们先要配置公钥。
# ssh-keygen -t rsa # ssh-copy-id -i root@192.168.137.6 #为ansible管理的主机安装server的公钥
再次运行上一条命令:
# ansible local -m ping
server | SUCCESS => {
"changed": false,
"ping": "pong"
} client | SUCCESS => {
"changed": false,
"ping": "pong"
}
2> 其他命令简介
查看local组主机内存使用情况:
# ansible local -a "free -m"
server | SUCCESS | rc= >>
total used free shared buff/cache available
Mem:
Swap:
client | SUCCESS | rc= >>
total used free shared buff/cache available
Mem:
Swap:
若要执行带有管道的命令,可使用shell模块:
# ansible local -m shell -a "df -h | grep /home"
server | SUCCESS | rc= >>
/dev/mapper/cl-home 16G 187M 16G % /home
client | SUCCESS | rc= >>
/dev/mapper/cl-home 16G 187M 16G % /home
限定命令只在一台client主机生效:
# ansible -a "df -h" --limit "client"
执行一个耗时任务:(-B 3600表示最多运行60分钟,-P 60表示每隔60s获取一次状态)
ansible all -B -P 6 -a "/usr/bin/long_running-operation --do-stuff"
其他ansible参数可使用ansible -h查看。
3> 常用模块命令举例
①file模块
创建文件符链接:
# ansible local -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
更改文件权限为755,属组为root:root:
ansible local -m file -a "dest=/tmp/resolv.conf mode=755 owner=root group=root"
②service模块
启动NTP服务:
# ansible local -m service -a "name=ntpd state=started enabled=yes"
③copy模块
将本地文件拷贝到远程服务器:
# ansible local -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"
更多模块请参考命令ansible-doc -l
模块官网http://docs.ansible.com/ansible/latest/list_of_all_modules.html
Ansible(二) - 配置及命令简介的更多相关文章
- Ansible安装配置及命令使用详解
Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...
- ansible 三配置和命令集
一.Ansible配置 Ansible安装好之后的配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/ansible.cfg 2.源码包安装,配置文件路径需要从软件包 ...
- Windbg 脚本命令简介 二, Windbg command
Windbg 脚本命令简介 二, Windbg script command $<, $><, $$<, $$><, $$>a< (Run Scri ...
- 在Mac上配置adb命令
在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...
- ansible之基本原理及命令
什么是ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(\(puppet.chef.func.fabric\))的优点,实现了批量系统配置.批量程序部署 ...
- ansible的两种命令执行方式 : ad-hoc / playbook以及通过setup模块获取系统参数
一.什么是ad-hoc和playbook ad-hoc : 如果我们敲入一些命令去快速的完成一些操作,而不需要将这些执行过的命令刻意保存下来,这样的命令就叫做as-hoc命令,这里不做过多赘述. p ...
- (一)ansible 安装配置
CentOS 7.5 一,安装 yum -y install ansible 二,配置hosts文件 /etc/ansible/hosts s1 ansible_ssh_port= ansible_s ...
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- linux网络配置相关命令、虚拟网络接口eth0:0
网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口 ...
随机推荐
- adb 安装apk 报错:Failure [INSTALL_FAILED_ALREADY_EXISTS]
遇到INSTALL_FAILED_ALREADY_EXISTS问题,直接通过adb install -r xxx.apk命令安装apk即可
- Entity Framework Core 2.0 中使用LIKE 操作符
Entity Framework Core 2.0 中使用LIKE 操作符 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译 ...
- 格式化JSON字符串
提出需求 异步调用获取JSON数据时非常不直观,每次都需要格式化一次,才能直观的看到数据集合的结构,现在需要实现输出带缩进的格式. 实现效果 在浏览器的查看源文件中已经实现格式化,如果是页面使用,可以 ...
- 基于SSM实现的简易员工管理系统(网站上线篇)
经历无数苦难,好不容易,网站终于上线了.=.=内牛满面ing.chengmingwei.top就是本员工管理系统的主页啦.是的,很简陋,但是毕竟是第一次嘛,所以慢慢来嘛. 如上次所说的(网站简介,见: ...
- jdbc hibernate myBatis比较
jdbc hibernate myBatis比较 jdbc 优点:性能高,易掌握 缺点:代码繁琐 hibernate 优点:不用写sql,代码简洁 缺点:性能不好 自动生成的sql效率低下(复杂业务) ...
- Run Logic
1.lr_output_message()函数,其作用是将内容输出到Replay Log中: 如果输出整数型内容,应该这样写; int x; x=10; lr_output_message(" ...
- 《深入浅出MySQL》之数据类型
MySQL提供了多种数据类型,主要包括数值型.字符串型和日期时间类型.本次博客就来谈谈MySQL中常用的数据类型吧(版本:mysql-5.7.19)! 数值类型 MySQL支持所有标准SQL中数值类型 ...
- 英语学习案例分析APP 201421123108 王坤彬
第一部分.调研,测评 1.第一次使用经验. 我使用的时候苹果手机下载的必应软件.第一次使用感觉还好,但是知名度比较低,比不上喜马拉雅听书软件,这里我就做两者的对比.首先界面以及种类明显逼格更差点.必应 ...
- SNS团队第一次站立会议(2017.04.22)
一.当天站立式会议照片 本次会议主要内容:进一步明确了团队中各个成员的定位,说明了下一步团队工作的方向 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 罗于婕 系统架构设计及项目数据库设 ...
- 201521123070 《JAVA程序设计》第6周学习总结
1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...