码迷,mamicode.com
首页 > 其他好文 > 详细

ansible 学习记录

时间:2018-01-10 20:23:54      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:epel   package   check   路径   学习记录   文件中   syn   hosts   好的   

Ansible 的重新学习记录
这里我的Ansible的宿主机是centos 7.2系统,这里我通过yum 安装Ansible
1、配置epel源
sudo yum -y install epel-release

2、安装Ansible
sudo yum -y install ansible

3、安装pip
mkdir /data/tools && cd /data/tools
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
sudo python ez_setup.py --insecure    
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar -xf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python setup.py install

4、安装ansible 需要用到的一些常用的附属模块
pip install paramiko PyYAML Jinja2 httplib2 six


Jinja2:Python 的一个对设计师友好的现代模板语言
PyYAML:Python 的一个 YAML 编码/反编码函数库
paramiko:纯 Python 编写的 SSHv2 协议函数库 (译者注:原文对函数库名有拼写错误)
httplib2:一个功能全面的 HTTP 客户端函数库


5、因为ansible管理主机的时候我们也是通过ssh协议来管理的,所以为了方便这里我们把ansible宿主机和
被管理客户端主机ssh免密通道打通。这样的话,我们操作起来就非常的方便了
首先我们在宿主机生成一个公钥
生成秘钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ”  # 生产密钥对

这个命令会产生一个公钥(~/.ssh/id_rsa.pub)和密钥(~/.ssh/id_rsa),

 -t dsa:表示使用密钥的加密类型,可以为’rsa’和’dsa’

 -P ”:表示不需要密码登录

 -f ~/.ssh/id_dsa:表示密钥存放的路径为${USER}/.ssh/id_dsa

ssh-copy-id -i ~/.ssh/id_rsa.pub username@[ip,hostname]  -p10999


或者我们使用这个方法来传输公钥到远程主机上
ansible web -m shell -a "cat /home/wwwad/id_rsa.pub >> /home/wwwad/.ssh/authorized_keys"--ask-pass -c paramiko
这样,我们会以密码的形式登录到远程主机,把公钥传过去



#如果你是单台机器的话,可以使用这种方式把公钥文件传递到对方主机
PS:
   很多时候,一些童鞋使用scp来把公钥文件传递到远程主机上,然后再给cat到远程主机的authorized_keys文件中,但是这种情况是属于你手动创建了authorized_keys文件,这个时候这个文件的权限跟你系统定义的umask是相关联的,所以也就导致了你已经上传公钥到远程主机但是依旧不能通过公钥来登录远程主机。这是authorized_keys文件权限问题导致的。


6、接下来我们就应该配置host清单了
sudo chown wwwad.wwwad /etc/ansible -R
sudo chown wwwad.wwwad /usr/bin/ansible
sudo chown wwwad.wwwad /usr/bin/ansible-2.7

cd /etc/ansible
cp hosts hosts_bak
>hosts
vim hosts
[live-web]
web3 ansible_ssh_host=10.19.15.63 ansible_ssh_port=10958 ansible_ssh_user=wwwad

[live-web] :主机群组
web3        :主机10.19.15.63 的别名


接下来我们看看ansible的常用模块
今天练习,我接触和用到的模块有
command  shell  copy  ping

目前就用到这三个模块,剩余的模块,接着学习
copy模块
file模块
cron模块
group模块
user模块
yum模块
service模块
script模块
ping模块
command模块
raw模块
get_url模块
synchronize模块

ansible all -m ping -ask-pass -c paramiko -u root

这样的话,我们可以以输入密码的形式来执行模块和命令

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
-ask-pass  使用密码的形式登录主机
这里-u root 可以换成 --become
这里的
-ask-pass 的简写模式是 -k
--become  的简写模式是 -b

 

ansible 学习记录

标签:epel   package   check   路径   学习记录   文件中   syn   hosts   好的   

原文地址:https://www.cnblogs.com/smail-bao/p/8260196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!