ansiable简单入门

转载:ansible总结 - 简书

介绍

ansible是自动化运维工具,基于python开发。

实现了批量系统配置,批量程序部署,批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。

 安装

yum安装方式

yum install -y epel-release

yum -y install ansible

pip安装方式

pip install ansible

使用

帮助

ansible-doc –h 查看帮助文档

ansible-doc –l 显示所有模块

ansible –vvv  显示执行过程,可以用来查看错误地方,进行排错

配置文件

ansible配置文件查找顺序

  1. 检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);
  2. ~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;
  3. /etc/ansible.cfg检查etc目录的配置文件。

/etc/ansible.cfg    
    inventory = /etc/ansible/hosts      #这个参数表示主机清单inventory文件的位置
    library = /usr/share/ansible        #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
    forks = 5       #并发连接数,默认为5
    sudo_user = root        #设置默认执行命令的用户
    remote_port = 22        #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
    host_key_checking = False       #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
    timeout = 60        #设置SSH连接的超时时间,单位为秒
    log_path = /var/log/ansible.log     #指定一个存储ansible日志的文件(默认不记录日志)

Inventory(主机列表)配置文件

ansible可同时操作属于一个组的多台主机组和主机之间的关系通过inventory文件配置,默认的文件路径为/etc/ansible/hosts。

除默认文件外,还可以同时使用多个inventory文件 ansible –i , 也可以从动态源,或云上拉取inventory配置信息。

inventory文件遵循INI文件风格

  • 配置文件常用参数:

ansible_ssh_host # 远程主机
ansible_ssh_port # 指定远程主机ssh端口
ansible_ssh_user # ssh连接远程主机的用户,默认root
ansible_ssh_pass # 连接远程主机使用的密码,在文件中明文,建议使用--ask-pass或者使用SSH keys
ansible_sudo_pass # sudo密码, 建议使用--ask-sudo-pass
ansible_connection # 指定连接类型: local, ssh, paramiko
ansible_ssh_private_key_file # ssh 连接使用的私钥
ansible_shell_type # 指定连接对端的shell类型, 默认sh,支持csh,fish
ansible_python_interpreter # 指定对端使用的python编译器的路径

ansible命令常用参数

ansible

-m : 要使用的模块,默认为command

-a :  要执行的命令

-i  filename   指定hosts文件  默认为etc/ansible/hosts

-u :ssh连接的用户名,默认root

-k :提示输入ssh登录密码。当使用密码验证的时候用

-s : sudo运行

-U :sudo到那个用户,默认为root

-f :fork多少个进程并发处理,默认为5个

-i :指定hosts文件路径,默认default=/etc/ansible/hosts

-I :指定pattern,对已匹配的主机中再过滤一次

-M :要执行的模块路径,默认为/usr/share/ansible

-o:压缩输出,摘要输出

--private-key :私钥路径

实现无密码登录

将管理机的公钥复制到客户端的authorized_keys文件中

chmod -R 700 ~/.ssh

将客户端的ip添加到hosts文件中

或者添加到其他文件中,可以使用ansible –i 指定此文件

报错处理

  • 问题:usr/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)

原因:python库中urllib3 (1.22) or chardet (2.2.1) 的版本不兼容

解决:

pip uninstall urllib3

Permissions 0755 for '/root/.ssh/id_rsa' are too open

~/.ssh目录权限太高,给700就可以

你可能感兴趣的:(ansible,运维,python,ssh)