zoukankan      html  css  js  c++  java
  • 【Ansible 文档】【译文】入门教程

    http://docs.ansible.com/ansible/latest/intro_getting_started.html

    Foreword 前言

    到这里,你应该已经安装了Ansible,是时候介绍一些ad-hoc命令了。

    我们首先展示的不是Ansible强大的配置/部署/编排特性。这些特性由Playbook处理,并在其他的章节描述。

    本章是关于如何初步地使Ansible运行。一旦你理解了这些概念,阅读 Introduction To Ad-Hoc Commands 获取更多详细的细节,然后你就可以开始准备学习Playbooks并且他所更加有趣的部分。

    Remote Connection Information 远程连接信息

    在我们入门之前,有必要理解 Ansible 如何与远端机器通信,基于SSH。默认地,Ansible 1.3之后,如果可能,会尝试用本地OpenSSH来远程连接。这启用了ControlPersist(一个性能特性),Kerberos,和 ~/.ssh/config中的选项,例如Jump Host setup。然而,当使用企业版Linux 6 操作系统作为控制机时(红帽企业级Linux和其衍生物如CentOS),OpenSSH的版本可能比较低,而不支持ControlPersist特性。在这样的系统中,Ansible会退回并采用 paramiko (由Python实现的高质量OpenSSH库)。如果你想要使用一些特性,像Kerberized SSH等,考虑使用Fedora, OS X, or Ubuntu作为你的控制机,直到你的平台支持更新版本的OpenSSH,或者使用Accelerated Mode

    Ansible 1.2之前,我们默认使用paramiko,本地ssh需要显示指定 -c ssh,或者在配置文件中设置。

    你偶尔会遇到不支持SFTP的设备.虽然这很少见,但你会有概率中奖.你可以通过在配置文件(Configuration file)中切换至 SCP模式来与之链接。

    当与远程主机通信时,Ansible假设你默认使用ssh keys。SSH keys 是推荐做法,但是密码认证也可以在需要的时候使用,需要指定 --ask-pass 选项。如果使用sudo特性,需要提供sudo密码,使用--ask-become-pass选项(--ask-sudo-pass已经弃用)。

    也许下面说的是常识,但是这也值得提一下:任何管理系统在受控机附近运行都会得到好处,如果你正在云中运行Ansible,请使用云中的一台机器。

    作为一个进阶话题,Ansible不止支持SSH来远程连接.连接方式是插件化的而且还有许多本地化管理的选项诸如管理 chroot, lxc, 和 jail containers。一个叫做‘ansible-pull’的模式能够反转主控关系并使远程系统通过定期从中央git目录检出 并 拉取 配置指令来实现背景连接通信。

    Your first commands 你的第一条命令

    现在你已经安装了Ansible,是时候从一些基本知识开始了。编辑(或创建) /etc/ansible/hosts 并在其中加入一个或多个远程系统.你的public SSH key必须在这些系统的``authorized_keys``中:

    注意: /etc/ansible/hosts是默认的主机清单文件路径,你可以在配置文件中重写,查看这里

    192.0.2.50
    aserver.example.org
    bserver.example.org

    这是一个清单文件,更深入的解析你可以参考Inventory

    我们假设你使用SSH KEY来认证。设置SSH代理来避免重复输入密码:

    $ ssh-agent bash
    $ ssh-add ~/.ssh/id_rsa

    (取决于你的设置,你也许希望使用Ansible的 --private-key 选项,通过指定pem文件来代替SSH Key来授权)

    现在ping 你的所有节点:

    $ ansible all -m ping

    Ansible会像SSH那样试图用你的当前用户名来连接你的远程机器。要覆写远程用户名,只需使用’-u’参数。

    如果你想访问 sudo模式,这里也有标识(flags)来实现:

    # as bruce
    $ ansible all -m ping -u bruce
    # as bruce, sudoing to root
    $ ansible all -m ping -u bruce --sudo
    # as bruce, sudoing to batman
    $ ansible all -m ping -u bruce --sudo --sudo-user batman
    
    # With latest version of ansible `sudo` is deprecated so use become
    # as bruce, sudoing to root
    $ ansible all -m ping -u bruce -b
    # as bruce, sudoing to batman
    $ ansible all -m ping -u bruce -b --become-user batman

    注意: sudo 和 su 已经过时,使用become,可查看ansible命令的选项。

    恭喜!你已经使用ansible连上了你的节点,不久之后,你将会阅读更多现实案例在 Introduction To Ad-Hoc Commands,探索更多不同的模块,以及学习 Ansible Playbooks语言。ansible不仅仅可以运行命令,它同样有强大的配置管理和部署特性。还有很多需要探索的,但是基础部分已经可以工作了。

    Host Key Checking 主机KEY检测

    Ansible 1.2.1 版本后,已经开启默认的主机密钥检测。

    如果一个host被重新安装,并且有了一个不同的key在know_hosts中,这会导致一个错误信息直到被纠正。如果有个主机没有在“known_hosts”中被初始化,将会导致在交互使用Ansible或定时执行Ansible时,出现对key信息的确认提示.

     如果你想禁用此项行为并明白其含义,你能够通过编辑 /etc/ansible/ansible.cfg 或 ~/.ansible.cfg来实现:

    [defaults]
    host_key_checking = False

    或者你也可以通过设置环境变量来实现:

    $ export ANSIBLE_HOST_KEY_CHECKING=False

    同样注意,主机KEY检测在paramiko 模式中是相当的慢,如果你想使用这个特性,请使用ssh。

    所以,在不支持高版本的OpenSSH的系统,例如rhel,centos等,不应该设置该值为False,因为ssh key登录性能差+host key checking 慢,慢慢慢。

    支持高版本OpenSSH可以提高SSH登录性能

    Ansible 会记录一些关于远端系统的模块参数到syslog中,除非task或者play被标记为"no_log: true"属性,后续将继续讲解。

    在主控机上启用基本的日志功能参见  Configuration file文档 ,并在配置文件中设置’log_path。企业用户可能也对  Ansible Tower 感兴趣。

    Tower 提供了非常强健的数据库日志特性。它使一次次向下钻取数据并查看基于主机的历史、项目、以及特定的结果集成为可能 —— 同时提供了图形和 RESTful API。

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/pengyusong/p/7683176.html
Copyright © 2011-2022 走看看