使用ansible实现轻量级的批量主机管理
作者:邓聪聪
查看ansible配置文件下的hosts的文件
[root@ansible-server scripts]# cat /etc/ansible/hosts
[test]
172.16.16.7
172.16.16.8
[root@ansible-server scripts]#
1.生成秘钥对
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P '' -q #生产密钥对,免交互,并安静输出
这个命令会产生一个公钥(~/.ssh/id_dsa.pub)和密钥(~/.ssh/id_dsa),
-t dsa:表示使用密钥的加密类型,可以为'rsa'和'dsa'
-P '':表示不需要密码登录
-f ~/.ssh/id_dsa:表示密钥存放的路径为${USER}/.ssh/id_dsa
ssh-copy-id -i ~/.ssh/id_dsa.pub username@ip,hostname #如果你是单台机器的话,可以使用这种方式把公钥文件传递到对方主机
//被控主机下的文件信息
2.使用ansible-playbook来生成推送ymal文件,批量推送
这里使用到了authoried_keys模块,vi /opt/ssh_key.yaml
# Using alternate directory locations:
- hosts: test //可以是组也可以是全部
user: root //推送所使用的用户 tasks:
- name: ssh-copy
authorized_key:
user=root
key="{{ lookup('file', '/root/.ssh/id_dsa.pub') }}"
3.测试
[root@ansible-server scripts]# ansible all -m command -a date
172.16.16.8 | SUCCESS | rc= >>
Mon Mar :: EST
172.16.16.7 | SUCCESS | rc= >>
Mon Mar :: EST
[root@ansible-server scripts]#
4.1ansible的各项命令参数的使用
1.service #管理的服务必须存在在/etc/init.d/下有的服务脚本
name=service name #服务的名称
state=参数 #停止服务 服务状态信息为过去时 (stared/stoped/restarted/reloaded )
案例:ansible test -m service -a "name=crond state=restarted"
2.yum
name=name #指定安装的软件
state=installed #安装
案例:ansible test -m yum -a "name=vim state=installed "
3.copy #将/etc/hosts 文件 传输到各个服务器送,src=文件的源路径,dest=文件的目标路径
案例:ansible test -m copy -a "src=/etc/hosts dest=/tmp/"
4.script #脚本模块,在本地执行脚本时,将脚本中的内容传输到远程节点上运行
案例:ansible all -m script -a "/root/ansible-server/scripts/batch_free.sh"
4.2.剧本格式示例
剧本的检查 ansible-playbook --syntax-check name.ymal
剧本彩排 ansible-playbook -C name.ymal
# Using alternate directory locations:
- hosts: test //冒号后面跟参数必须有空格
user: root tasks: //冒号后面没有参数的时候可以省略掉空格
- name: ssh-copy //名称,可以跟多个剧本
authorized_key:
user=root
key="{{ lookup('file', '/root/.ssh/id_dsa.pub') }}"
使用Ansible的user模块批量修改远程客户机的用户密码
[root@ansible-server ~]# vi /opt/root_passwd.yaml
---
- hosts: test
gather_facts: false
tasks:
- name: change user passwd
user: name={{ item.name }} password={{ item.chpass | password_hash('sha512') }} update_password=always
with_items:
- { name: 'root', chpass: '' }
- { name: 'test', chpass: '' }
注意上面在yaml文件中修改了远程客户机的root用户密码, test用户密码.如果还想要修改其他用户密码, 则继续按照上面规则添加即可!
使用ansible实现轻量级的批量主机管理的更多相关文章
- 运维自动化之1 - ansible 批量主机管理
2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一 ...
- [转帖]Ansible批量远程管理Windows主机(部署与配置)
2018-09-12 12:04:42 https://blog.51cto.com/7424593/2174156 一.测试环境介绍 Ansible管理主机: 系统: CentOS6.8 IP ...
- Ansible批量远程管理Windows主机(部署与配置)
一.测试环境介绍 Ansible管理主机: 系统: CentOS6.8 IP Addr: 172.16.10.22 Linux管理服务器需安装pip.pywinrm插件 Windows客户端主机: ...
- Django + Ansible 主机管理(有源码)
本文给大家介绍如何利用 Django + Ansible 进行 Web 项目管理. Django介绍 一个可以使 Web 开发工作愉快并且高效的 Web 开发框架,能够以最小的代价构建和维护高质量 ...
- Ansible批量自动化管理工具
一,工具与环境介绍 1.1 ansible简介 批量管理服务器的工具 无需部署agent,通过ssh进行管理 流行的自动化运维工具:https://github.com/ansible/ansible ...
- Ansible批量自动化管理工具 roles标准化
批量管理服务器的工具,无需部署代理,通过ssh进行管理,是python写的 ansible 常用模块 : (1)shell命令模块执行命令 (2)copy模块批量下发文件或文件夹 (3)script模 ...
- Ansible批量自动化管理工具(二)
Ansible批量自动化管理工具(二) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...
- (转)SSH批量分发管理&非交互式expect
目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...
- python 之路,Day27 - 主机管理+堡垒机系统开发
python 之路,Day27 - 主机管理+堡垒机系统开发 本节内容 需求讨论 构架设计 表结构设计 程序开发 1.需求讨论 实现对用户的权限管理,能访问哪些机器,在被访问的机器上有哪些权限 实 ...
随机推荐
- 前序遍历构造已知二叉树(Java)
public BiNode createBiTree() { Scanner input = new Scanner(System.in); int k = input.nextInt(); if(k ...
- C#如何使SQLite程序集既能适应32位系统也能适应64位系统
分享5: 需求:都知道Sqlite3是分32位和64位版本的,那如果将一个Sqlite3.dll文件全适用 分析:Sqlite是种轻量级的数据库文件,使用了混合编程而成的,一部分采用非托管的C++代码 ...
- Spring 完成自动注入(autowire)
目录 两个测试类 普通方式手动注入 普通方式注入的缺点 自动注入的介绍 配置自动注入的方式 配置全局自动注入 局部单独配置 利用注解实现自动注入 两个测试类 package cn.ganlixin.p ...
- JS中的事件委托(事件代理)
一步一步来说说事件委托(或者有的资料叫事件代理) js中事件冒泡我们知道,子元素身上的事件会冒泡到父元素身上. 事件代理就是,本来加在子元素身上的事件,加在了其父级身上. 那就产生了问题:父级那么多子 ...
- [官网]Windows modules
Windows modules https://docs.ansible.com/ansible/latest/modules/list_of_windows_modules.html win_acl ...
- 解决win环境下访问本机虚拟机中centos7 ftp服务器的问题
inux搭建ftp服务器 1.安装软件: yum install vsftpd 2.修改配置文件vsftpd.conf: vim /etc/vsftpd/vsftpd.conf 把anonymous_ ...
- java循环1
public class f_w { public static void main(String []args) { int a=0; System.out.print("_info__w ...
- win 执行puppet
C:\scripts\win_exec_proxy.bat \\adsoft.base-fx.com\puppet\puppet\files\Windows_10_x64\C\user\logon\ ...
- apache+php项目部署
先安装apache和php然后进行如下操作(以63服务器的安装路径为例) 1.查看php项目运行的报错信息 路径: cd /var/log/httpd/error_log 如果错误如下: 可以尝试 ...
- LODOP打印当前日期时间的方法
JS方法直接获取.之前有个详细介绍的博文:LODOP打印用JS获取的当前日期本文也再演示一下,详细介绍见上面链接的博文,该方法此文不做详细介绍. 本文有三段:1.JS获取日期,2,.LODOP的FOR ...