其他分享
首页 > 其他分享> > ansible-ad_hoc

ansible-ad_hoc

作者:互联网

ansible学习笔记(1)

ansible之ad_hoc
一、认识
ansible可以同时对堕胎服务器或者服务器组进行操作,来避免我们同一个操作做多次的工作。如果需要进行操作的服务器不是很多,那么ansible也可以说是可有可无,对于大厂而言,部署系统,服务达到了几百台,这个时候才会显示出ansible的优势。
一、安装
1、环境说明:
ansible 192.168.159.129
init-02 192.168.159.129
init-02 192.168.159.129
# 只对ansible进行操作,init-02,init-03充当吉祥物的作用。
2、host解析
[root@ansible ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost1 localhost1.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.159.130 init-02
192.168.159.131 init-03
3、配置yum源
[root@ansible ~]# rm  -rf /etc/yum.repos.d/*
[root@ansible ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@ansible ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@ansible ~]# yum clean all && yum makecache fast
[root@ansible ~]# yum -y install ansible
4、安装检测
# rpm -ql ansible 列出所有文件
# rpm -qc ansible 查看配置文件
一、使用
1、定义主机清单
[root@ansible ~]# vim /etc/ansible/hosts
init-02
init-03
2、连通性测试
[root@ansible ~]# ansible   localhost   -m ping
测试init-02连通性
-m 指定模块。什么功能
-o 简洁输出
-u 指定用户
-k 密码选项
ping只是其中一个模块。还有shell,yum等等,只用于测试主机间的连通性,与我们平时所用的“ping”是不一样的,这里的“ping”是基于ssh协议属于应用层,而我们平时用的“ping”是基于icmp协议属于网络层。
3、Inventory -主机清单
	3.1 增加主机组
[root@ansible ~]# vim /etc/ansible/hosts
[web]
init-02
init-03
[root@ansible ~]# ansible web -m ping -u root -k -o
SSH password: 
host2 | SUCCESS => {"changed": false, "ping": "pong"}
init-02 | SUCCESS => {"changed": false, "ping": "pong"}
host1 | SUCCESS => {"changed": false, "ping": "pong"}
init-03 | SUCCESS => {"changed": false, "ping": "pong"}
	3.2 增加用户名 密码
[root@ansible ~]# vim /etc/ansible/hosts
[web]
host[1:2] ansible_ssh_user=root ansible_ssh_pass=111111		
[root@ansible ~]# ansible webs  -m ping -o
	3.3 增加端口	
[root@init-02 ~]# vim /etc/ssh/sshd_config 		#请将init-02 的sshd程序端口修改为2222
Port 2222
[root@init-02 ~]# systemctl restart sshd
[root@ansible ~]# ansible webs -m ping -o
[root@ansible ~]# vim /etc/ansible/hosts
[web]
host1 ansible_ssh_user=root ansible_ssh_pass=111111 ansible_ssh_port=2222
host2 ansible_ssh_user=root ansible_ssh_pass=111111
	3.4 组:变量
		
[root@ansible ~]# vim /etc/ansible/hosts  # ansible内部变量可以帮助我们简化主机清单的设置
[web]
host[1:2]
[web:vars]
ansible_ssh_user=root
ansible_ssh_pass=111111		
	3.5 子分组
		将不同的分组进行组合
[root@ansible ~]# vim /etc/ansible/hosts
[apache]
host1
[nginx]
host2
[web:children]
apache
nginx
[web:vars]
ansible_ssh_user='root'
ansible_ssh_pass='111111'
	3.6 自定义主机列表
[root@ansible ~]# vim hostlist
[dockers]
init-02
init-03
[dockers:vars]
ansible_ssh_user=root
ansible_ssh_pass=111111		
[root@ansible ~]# ansible -i  hostlist dockers  -m ping  -o
4、ad_hoc
# ad_hoc 其实就是点对点,简单命令行。将对主机清单内的主机、主机组批量化执行单一命令。
	4.1、shell模块
[root@ansible ~]# ansible web -m shell -a 'hostname' -o   # 获取主机名
[root@ansible ~]# ansible web -m shell -a 'hostname' -o -f 2
-f 2   指定线程数
-f FORKS, --forks=FORKS  Ansible一次命令执行并发的线程数。NUM被指定为一个整数,默认是5
[root@ansible ~]# ansible host2 -m shell -a 'yum -y install httpd' -o    # 部署apache
[root@ansible ~]# ansible host2 -m shell -a 'uptime' -o                  # 查询系统负载
	4.2、复制模块
[root@ansible ~]# ansible web -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777'
[root@ansible ~]# ansible web -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777 backup=yes'
[root@init-02 ~]# ll /tmp/
total 0
-rw-r--r-- 1 root root 0 Apr 10 11:24 1.txt
	4.3、用户模块
[root@ansible ~]# ansible web -m user -a 'name=tanuki state=present'
[root@ansible ~]# ansible web -m user -a 'name=tanuki state=absent'                      # 删除用户
	4.4、软件包管理
[root@ansible ~]# ansible host1 -m yum -a 'name="*" state=latest'                        # 升级所有包
[root@ansible ~]# ansible host2 -m yum -a 'name="httpd" state=latest'            	 # 安装apache
	4.5、服务模块
[root@ansible ~]# ansible host2 -m service -a 'name=httpd state=started'                 # 启动
[root@ansible ~]# ansible host2 -m service -a 'name=httpd state=started enabled=yes'     # 开机启动
[root@ansible ~]# ansible host2 -m service -a 'name=httpd state=stopped'                 # 停止
[root@ansible ~]# ansible host2 -m service -a 'name=httpd state=restarted'               # 重启
[root@ansible ~]# ansible host2 -m service -a 'name=httpd state=started enabled=no'      # 开机禁止启动
	4.6、文件模块
[root@ansible ~]# ansible host1 -m file -a 'path=/tmp/88.txt mode=777 state=touch'       # 创建文件
[root@ansible ~]# ansible host1 -m file -a 'path=/tmp/99 mode=777 state=directory'
	4.7、收集模块
[root@ansible ~]# ansible host2 -m setup                                                 # 查询所有信息
[root@ansible ~]# ansible host2 -m setup -a 'filter=ansible_all_ipv4_addresses'
3、简单小结
对于日常生产中问题更多地使用ad_hoc中的shell模块,剩下的模块更适合出现在playbook中。

标签:02,web,ad,init,ansible,ssh,root,hoc
来源: https://www.cnblogs.com/tanukisama/p/16127727.html