ansible学习笔记(一)

ansible 基础

一、安装ansible

1-1、先安装epel第三方源(我们这里选择华中科技大学镜像站)

wget http://mirror.hust.edu.cn/epel/epel-release-latest-8.noarch.rpm
rpm -ivh epel-release-latest-8.noarch.rpm

1-2、 安装ansible

yum install -y ansible

二、 ansible的简单了解(入门知识)

2-1、 主机清单

/etc/ansible/hosts
定义主机和主机组,以及选择主机和主机组
//主机(hosts)部分可以使用域名,主机名(ps.当使用这两种需主机能解析到相应的ip地址),ip地址(ip里面可以使用通配符)表示。
examples:
vim /etc/ansible/hosts
	192.168.1.11
	[mysql]
	192.168.1.100
	192.168.1.101
	[httpd]
	192.168.1.200
	192.168.1.201
	[nginx]
	192.168.1.[15:30]       //若ip多可以这样写 代表从192.168.1.15到192.168.1.30
	[ftp]
	node1
	node2		//可以写在/etc/hosts 中解析过的主机名
	[wuhan:children]			//主机组嵌套
	mysql
	httpd                       //组包含组 用children表示wuhan这个组里包含mysql和httpd组内的ip 而且这里面只能写组名
	[wuhan]
	192.168.1.31             //children表示wuhan的子组 若还需添加IP需重新写wuhan组 这样才不会报错
	
 	

ansible ip(all) --list-hosts 查看主机清单里是否有该ip存在 
// ip为all时列出所有ip ip为分组时 列出该组的ip  // 若ip即在组内有,也单独列出 被视为只在组有

examples: ansible 192.168.1.100,192.168.1.101 --list-hosts //匹配多个ip
		  ansible mysql,192.168.1.101 --list-hosts 
		  ansible mysql,httpd --list-hosts	//匹配多个组
		  ansible ungrouped --list-hosts //列出不属于任何组的ip
		  ansible all --list-hosts		//遇到重复IP会自动去重
// 通配符以及通配符组合匹配		  
		  ansible '*.com' --list-hosts  //使用通配符匹配所有.com 结尾的主机
		  ansible 's*' --list-hosts // 匹配s开头的主机 和 s开头的主机组内所有主机
		  ansible '*.examples.com,!*.lab.examples.com' --list-hosts // 匹配*.examples.com,但是不匹配*.lab.examples.com的主机
		  ansible 'db,&wuhan' --list-hosts // 匹配属于db组同时也属于武汉组的主机
		  ansible 'boston,london,&prod,!lb' --list-hosts    // 匹配在london组或者boston组,还必须在prod组中且必须不在lb组中的主机
//正则表达式匹配
		  ansible '~(s|db).*\.example\.com' --list-hosts  
		  //开头以~来表示这是一个正则表达式。意思是匹配以s或者db开头,中间包含任意长度字符串并以example.com结尾的主机或者组
//通过 --limit明确指定主机或组
		  ansible all --limit srv1.examples.com --list-hosts  //选定指定的主机或组(指定srv1.examples.com)
		  ansible all --limit @retry.txt --list-hosts  //选定retry.txt 文件里面的主机ip

2-2、配置文件

/etc/ansible/ansible.cfg 
##优先级##
	① ANSIBLE_CONFIG 				//ANSIBLE_CONFIG环境变量指定配置文件
	② ./ansible.cfg  				//当前运行应用级配置文件
	③ ~/.ansible.cfg 				//用户级配置文件
	④ /etc/ansible/ansible.cfg		//系统级配置文件
	
##ansible.cfg常用配置##	
[defaults]
#inventory      = /etc/ansible/hosts                     //定义默认使用的主机清单路径
#library        = /usr/share/my_modules/				 //定义默认使用的模块文件路径
#remote_tmp     = ~/.ansible/tmp						 //ansible远程主机脚本临时存放目录
#local_tmp      = ~/.ansible/tmp						 //ansible管理节点脚本临时存放目录
#forks          = 5										 //ansible执行并发数
#poll_interval  = 15									 //ansible异步任务查询间隔
#sudo_user      = root									 //ansible sudo用户
#ask_sudo_pass = True									 //运行ansible是否提示输入sudo密码
#ask_pass      = True									 //运行ansible是否提示输入密码
#transport      = smart									 //ansible远程传输模式
#remote_port    = 22									 //远程主机SSH端口
#module_lang    = C
#remote_user    = root									 //默认登录用户可以修改为其他用户
[inventory]
[privilege_escalation]
#become=True											 //如果远程主机连接的为普通用户,是否提权
#become_method=sudo									 	 //如果允许提取,定义提权方式,默认sudo
#become_user=root										 //定义提权到哪个用户,默认root
#become_ask_pass=False              					 //提权时,是否交互提示密码验证,默认false
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
#accelerate_port = 5099
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0
[selinux]
#host_key_checking = False								 //默认false,跳过第一次ssh连接输入yes/no选项
[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red
#diff_lines = cyan
[diff]
examples:
	ansible 被控端选择其他用户然后提权
	1、修改ansible.cfg 中的 #remote_user    = root	
	2、将[privilege_escalation]选项下的所有注释取消
	3、ssh-keygen做免密
	4、在主控端键入ansible agent -m shell -a 'echo ansible ALL=\(ALL\) NOPASSWD:ALL > /etc/sudoers.d/ansible' -u root
	修改被控端sudo权限即可

2-3、ad-hoc语法

##ad-hoc命令说明
	ansible 主机或者组 -m 模块名 -a '模块参数' ansible参数
//主机或者组
	在/etc/ansible/hosts 里进行指定
//模块名
	可通过 ansible-doc -l 里查看目前安装的模块
	默认不指定时使用command模块
	可在配置文件/etc/ansible/ansible.cfg 中"#module_name = command" 修改
//模块参数
	可以通过" ansible-doc 模块名 "查看具体用法和参数
//ansible参数
	可以通过ansible命令帮助信息里查看


##ansible-doc用法
	ansible-doc -l //查看所有模块
	ansible-doc -s module // 查看某个模块的参数
	ansible-doc module //查看该模块更详细的参数信息  
example:
	ansible-doc -l | grep yum //查询yum模块
	ansible-doc -s yum  //查询yum模块的参数 里面带例子examples
	ansible-doc yum //查询yum所有参数,以及在playbook的用法 带实例
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值