对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
阅读(1183) | 评论(0) | 转发(0) |