linux——ansible

ansible:基于python开发的自动化运维工具,基于模块工作,基于ssh实现管理。

特点:无需终端配置,只需在主节点布置ansible环境即可。

ansible命令:

-m:要执行的模块,默认为command
-a:指定模块的参数
-u:ssh连接的用户名,默认用root,ansible.cfg中可以配置
-b,--become:变成那个用户身份,不提示密码
-k:提示输入ssh登录密码,当使用密码验证的时候用
-s:sudo运行
-U:sudo到哪个用户,默认为root
-K:提示输入sudo密码,当不是NOPASSWD模式时使用
-C:只是测试一下会改变什么内容,不会真正去执行
-c:连接类型(default=smart)
-f:fork多少进程并发处理,默认为5个
-i:指定hosts文件路径,默认default=/etc/ansible/hosts
-I:指定pattern,对已匹配的主机中再过滤一次
-list-host:只打印有哪些主机会执行这个命令,不会实际执行
-M:要执行的模块路径,默认为/usr/share/ansible
-o:压缩输出,摘要输出
--private-key:私钥路径
-T:ssh连接超时时间,默认是10秒
-t:日志输出到该目录,日志文件名以主机命名
-v:显示详细日志

ansible模块

https://blog.csdn.net/pushiqiang/article/details/78249665

https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_032_ansible02.html

command模块:作为ansible的默认模块,可以允许远程主机范围内的所有shell命令。

[root@localhost ~]# ansible all -m command -a ls    
192.168.24.132 | CHANGED | rc=0 >>
anaconda-ks.cfg
initial-setup-ks.cfg

[root@localhost ~]# ansible all -m copy -a "src=/root/aaa dest=/root/ owner=root group=root mode=0755"     

#src 主控端文件位置
#dest 被控端目标位置
#owner 文件复制过去后的所有者
#group 文件复制过去后的所属组
#mode  文件的权限设定,执行a+x这种方式
stat模块:获取远程文件的状态信息,包括atime,ctime,mtime,md5,uid,gid等信息。
[root@localhost ~]# ansible all -m stat -a "path=/root/test"
yum模块:安装软件包
[root@localhost ~]# ansible all -m yum -a "name=httpd state=latest disable_gpg_check=yes enablerepo=epel"
#name 包名
#state (Choices: present, installed, latest, absent, removed)[Default: present]
#disable_gpg_check:禁止gpg检查
#enablerepo:只启动指定的repo
mount模块:挂载文件系统
[root@localhost ~]# ansible 192.168.168.111 -m mount -a "path=/mnt/data src=/dev/sd0 fstype=ext3 ots=ro state=present"
service模块:服务管理
[root@localhost ~]# ansible all -m service -a "name=httpd state=restarted"    #启动服务
[root@localhost ~]# ansible all -m service -a "name=httpd state=running"      #查看服务状态
[root@localhost ~]# ansible all -m service -a "name=httpd state=stoped"       #停止服务

安装ansible 

配置epel

 [root@localhost ~]# wget -O /etc/yum.repos.d/7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 [root@localhost ~]# yum install epel-release -y

安装ansible

[root@localhost ~]# yum install ansible -y

 [root@localhost ~]# ansible --version
ansible 2.8.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

 配置SSH

[root@localhost ~]#ssh-keygen -t rsa -P ""
[root@localhost ~]#96  ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.24.132
[root@localhost ~]#97  ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.24.131

配置主机组

[root@localhost ~]# more /etc/ansible/hosts
[webserver]
192.168.24.131
192.168.24.132

测试

[root@localhost ~]# ansible all -m ping                                        #ping主机
192.168.24.132 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.24.131 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
[root@localhost ~]# ansible all -m command -a ls                              #command模块测试shell命令ls
192.168.24.131 | CHANGED | rc=0 >>
anaconda-ks.cfg
initial-setup-ks.cfg

192.168.24.132 | CHANGED | rc=0 >>
anaconda-ks.cfg
initial-setup-ks.cfg

 

你可能感兴趣的:(linux——ansible)