Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7174310
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 系统运维

2014-05-29 14:07:40

对ansible早有耳闻,知道是一款不错的批量处理工具,对运维的同学来说算是工作偷懒的利器吧。不需要安装client端,与远程服务器之间的通信是经由ssh,这都是ansible的特色~~ 不废话了,由于是刚接触,先介绍一些比较基础的用法。

需求是这样滴:公司内部办公环境登陆生产环境,需要经过跳板机才能过去,因此在跳板机上需要维护几百号人的账号,由于是账号都是强制90天更新的,所以有些猪头就忘了,然后找过来要重置,不胜其烦。跳板机有好几台,当然用shell里for循环也能方便的满足需求,不过咱玩点洋气的嘛(O(∩_∩)O哈哈~)

首先建一个hosts文件(文件名任取),在里面写好机器列表,当然可以进行分组(方便日后的扩展),比如文件内容如下:
[jump]
192.168.0.100
192.168.0.101
192.168.0.102
....
[xxx]
bla bla bla

  • 账号的建立:
 ansible -i hosts jump -m user -a "name=tester password=%%&& shell=/bin/bash " -u root -k    

  这些参数一个个来讲哈 (后面账号删除、修改啥的就都相同啦~)
            -i 指定 inventory文件的位置 (这里表示当前路径下的hosts文件,刚建立的那个)
            jump 这个就是指定inventory文件中名称为jump的那个机器组(强大吧,以后扩展机器列表的时候,指定不同机器组名称,就只需要维护这个文件就行啦)
            -m 后面接模块名称,创建账号使用的模块名称是user。如果不带-m这个参数的话,默认使用的是shell/command模块,介两个是一样的
            -a 这里面就开始写命令咯,前面模块内支持的一些指令。ansible中命令绝大部分都是key=value 这种形式的,比如此处:指定用户名=tester, 密码为后面“一长串”,然后指定用户的shell(俺们公司的场景就要这个,用户登跳板机时,使用的是受限制的shell,只能用几个命令)
            -u 指定用户,由于创建账号需要root权限,且有信任关系的账号没加sudo 建账号的权利
            -k 表示ssh指定用户时候,需要输入的密码(其实只要本地这个账号和远程机器有信任关系,且那个账号有足够的权限能实现前面的操作,-u和-k这两个参数都是不需要的)

            qio do ma de! 这里password还有话要说:后面接的不能是明文,后面接的这一串将会直接存到远程机器的/etc/shadow里面。到时候你登陆时输的密码要经过hash加密之后再去和/etc/shadow里面的那个串去比对,当然就不行咯。所以在写password的时候就需要是经过加密后的了。官方文档里推荐这种加密方式:  openssl passwd -salt -1 "bla bla"  ,将命令行输出那一串放在password后面吧,这样就ok啦~~

=================================================================
  • 修改密码:
        这就简单了 ,还是刚才那一串命令,只是password改成新的加密后的串就ok咯~


  • 干掉用户(杀呀!):
    ansible -i hosts jump -m user -a "name=tester remove=yes state=absent" -u root -k
            新的两个配置项:remove, state  都比较好理解吧,补充的一点就是,这样就类似shell中的userdel --remove ,干掉账号的同时,家目录 邮箱 以及与账号相同的组(tester)一同被干掉,很爽吧~ 。另一还个配置项 force=yes ,同userdel --force ,不多说了。


==================================================
还有一个就是建立用户组,使用的是新的模块 group
    ansible -i test puppet -m group -a "name=test state=present" -u root -k 

    
 


阅读(1190) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~