1.使用yum安装1.使用yum安装yuminstallepel-release-yyuminstallansible–y2.使用pip(python的包管理模块)安装首先我们需要安装一个python-pip包。安装完成后,然后直接使用pip命令安装我们的包。具体操作过程如下:yuminstallpython-pippipinstallansible3。查看ansible的版本号[root@app01paas-basic]#ansible--versionansible2.9.18configfile=/etc/ansible/ansible.cfgconfiguredmodulesearchpath=[u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules']ansiblepython模块位置=/usr/lib/python2.7/site-packages/ansible可执行位置=/usr/bin/ansiblepython版本=2.7.5(默认,2020年11月16日,22:23:17)[GCC4.8.520150623(RedHat4.8.5-44)][root@app01paas-basic]#2。Ansible配置文件1.ansible命令执行过程加载自己的配置文件,默认/etc/ansible/ansible.cfg;找到对应的host配置文件,找到要执行的Host或者group;加载自己对应的模块文件,比如command;通过ansible从模块或命令生成对应的临时py文件(python脚本),并将该文件传输到远程服务器;对应.ansible/tmp/XXX/XXX.PY文件;赋予文件+x执行权限;执行并返回结果;删除临时py文件,sleep0退出;2、ansible程序结构的安装目录如下(yum安装):配置文件目录:/etc/ansible/可执行文件目录:/usr/bin/lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/帮助文档目录:/usr/share/doc/ansible-X.X.X/man文档目录:/usr/share/man/man1/3.ansible配置文件搜索顺序Ansible在这一点上与我们的其他服务有很大不同。这里的配置文件搜索是从多个地方找到的,顺序如下:1、查看环境变量ANSIBLE_CONFIG文件指向的路径(exportANSIBLE_CONFIG=/etc/ansible.cfg);2.~/.ansible.cfg,查看当前目录下的ansible.cfg配置文件;3./etc/ansible.cfg查看etc目录下的配置文件4.ansible配置文件ansible的配置文件是/etc/ansible/ansible.cfg。Ansible有很多参数。下面我们列出一些常用的参数:inventory=/etc/ansible/hosts#该参数表示资源列表的位置inventoryfilelibrary=/usr/share/ansible#指向存放Ansible模块的目录,支持多目录methods,只要用冒号(:)分隔即可forks=5#并发连接数,默认为5sudo_user=root#设置默认用户执行命令remote_port=22#指定管理端口连接被管节点,默认是22端口,建议修改,可以更安全host_key_checking=False#设置是否检查SSH主机的key,值为True/False。关闭后第一次连接不会提示配置实例timeout=60#设置SSH连接的超时时间,单位秒log_path=/var/log/ansible.log#指定一个文件存放ansible日志(没有日志被记录)default)5.ansiblehostlist在配置文件中,我们提到了资源列表。这个列表就是我们的主机列表,里面包含了ansible需要连接和管理的主机列表。undefined假设我们设置了加密密码,使用这个选项访问-BSECONDS#后台运行超时时间-C#模拟运行环境,进行预运行,可以进行错误检查测试-cCONNECTION#连接类型使用-fFORKS#并行任务的个数,默认是5-iINVENTORY#指定主机列表的路径,默认是/etc/ansible/hosts--list-hosts#查看有哪些主机组-mMODULE_NAME#名字execution模块,默认使用command模块,所以如果只执行单个命令,不需要-m参数-o#压缩输出,尽量一行输出所有结果,一般使用-S为采集工具#使用su命令-RSU_USER#指定su用户,默认为root用户-s#使用sudo命令-USUDO_USER#指定sudo到哪个用户,默认为root用户-TTIMEOUT#指定ssh的默认超时时间,默认10s,也可以在配置文件中修改-uREMOTE_USER#远程用户,默认为root用户-v#查看详细信息,支持-vvv,-vvvv可以查看更详细的信息8.执行命令[root@ambari1.ssh]#ansibleall-mping主机的认证'192.168.17.221(192.168.17.221)'无法建立。ECDSA密钥指纹为c5:76:ed:2e:c8:6b:85:25:0b:d7:b4:8f:12:66:72:1f。您确定要继续连接吗(是/否)?是192.168.19.100|无法到达!=>{"changed":false,"msg":"无法通过ssh连接到主机:警告:将'192.168.19.100'(ECDSA)永久添加到已知主机列表中。\r\n权限被拒绝(公钥,gssapi-keyex,gssapi-with-mic,password).\r\n","unreachable":true}192.168.19.101|SUCCESS=>{"changed":false,"ping":"pong"}解决的问题:来自上面我们可以看到192.168.19.100有问题,无法执行成功,此时可以在/etc/ansible/hosts的基础上添加相关内容如下:##db-[99:101]-node.example.com[master]192.168.19.100ansible_connection=sshansible_ssh_user=rootansible_ssh_pass=123456ansible_ssh_port=33192.168.19.1013.Ansible命令1.command模块该模块可以直接在远程主机上执行命令并返回结果这个主机[root@test1~]#ansibleweb-mcommand-a'netstat-ntlp'192.168.19.100|改变|rc=0>>活动互联网连接(仅服务器)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00127.0.0.1:250.0.0.0:*LISTENtcp000.0.0.0:220.0.0.0:*LISTENtcp600::1:25::*LISTENtcp600::22::*LISTEN192.168.19.101|改变|rc=0>>活动互联网连接(仅服务器)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00127.0.0.1:250.0.0.0:*LISTENtcp000.0.0.0:220.0.0.0:*LISTENtcp600::1:25::::*LISTENtcp600::::22::::*LISTEN[root@test1~]#2.shell模块shell模块可以调用shell解释器在远程主机上运行命令,支持shell的各种功能,如管道等[root@test1~]#ansibleweb-mshell-a'cat/etc/passwd|grep"root"'192.168.19.101|改变|rc=0>>root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin192.168.19.100|改变|rc=0>>root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@test1~]#
