Ansible自动化运维安装与简单使用(2)

非常抱歉哦,竟然是失败的。为什么呢?Ansible是基于ssh进行工作的,那么当ssh一台远程主要的时候,是不是需要输入密码呢?可是这一条指令并没有提示输入口令呢

加参数-k输入密码

Ansible自动化运维安装与简单使用

设置免密码登录(参考如下)

----------------------------参考如下----------------------------

两台Linux主机需要从其中一台ssh至另外一台需要手动输入密码,通过以下设置免密码登录

生成秘钥

ssh-keygen -t rsa

会在文件夹/root/.ssh下面生产公钥和私钥

Ansible自动化运维安装与简单使用

把秘钥复制至需要免密登录的主机,第一次拷贝需要输入一次密码

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.1.3.4

会在远程主机的文件夹/root/.ssh下面自动生成文件authorized_keys 文件内容为公钥id_ras.pub一样

也可以直接把公钥复制编辑需要远程登录的主机的/root/.ssh/authorized_keys文件

验证能否免密登录

ssh 10.1.3.4

----------------------------到此位置----------------------------

Ansible自动化运维安装与简单使用

就不会提示需要输入密码了

Ansible常用命令语法

ansible <host-pattern> [-m module_name] [options]
指令 匹配规则的主机清单 -m 模块名 选项
 
--version 显示版本
-a 模块参数(如果有)
-m module 指定模块,默认为command
-v 详细过程 –vv -vvv更详细
--list-hosts 显示主机列表,可简写--list
-k, --ask-pass 提示连接密码,默认Key验证
-K,--ask-become-pass 提示使用sudo密码
-C, --check 检查,并不执行
-T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, --user=REMOTE_USER 执行远程执行的用户
-U, SUDO_USER, --sudo-user 指定sudu用户
-b, --become 代替旧版的sudo 切换

ansible-doc: 显示模块帮助
ansible-doc [options] [module...]
 
-a 显示所有模块的文档
-l, --list 列出可用模块
-s, --snippet 显示指定模块的简要说明
 
例子:#ansible-doc ping
 
由于ansible的模块有1378个(2.4.2.0),并且一直在持续更新。因此,这个指令必须要掌握的。
#ansible-doc -l |wc -l
1378

Ansible 的命令执行过程以 ansible all -m command -a 'ls -l /' -vvv 这条命令为例,根据显示的信息时行解读

1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg
    Using /etc/ansible/ansible.cfg as config file
 
2.匹配主机清单
    Parsed /etc/ansible/hosts inventory source with ini plugin
 
3. 加载指令对应的模块文件,如command,生成.py的文件到本机的临时目录,这个目录就是在/etc/ansible/ansible.cfg定义的
    Using module file /usr/lib/python2.7/site-packages/ansible/modules/commands/command.py
    PUT /tmp/tmp4JvsLH TO /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py
 
4. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件,
    这个目录就是在/etc/ansible/ansible.cfg定义的
    ( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861 `" ....)
    sftp> put /tmp/tmp4JvsLH /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py\n'
 
5. 给文件+x 权限
    'chmod u+x /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/ /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py && sleep 0'
 
6. 执行并返回结果
    '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py;
 
7. 删除临时py文件,sleep 0退出
    rm -rf "/root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/" > /dev/null 2>&1 && sleep 0
 
8.断开远程主机连接
    'Shared connection to 7-db-3.hunk.tech closed.\r\n')

执行结果状态

 绿色:执行成功并且不需要做改变的操作
 
 ×××:执行成功并且对目标主机做变更
 
 红色:执行失败

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/809f0cf0f810c7acee486e8ddc1fae65.html