zoukankan      html  css  js  c++  java
  • 【原创】Centos8使用ansible

    目录

    • 使用ansible发布公钥
    • ansible基本命令
    • ansbile配置文件详解

    一、使用ansible发布公钥

    1.0 生成秘钥对

    1、生成命令

    ssh-keygen -t rsa

    # 推送单个公钥到远程机器
    ssh-copy-id -i ~/.ssh/id_rsa.pub username@<IP>

      

    2、验证

    ll .ssh/
    total 8
    -rw-------. 1 root root 2610 Feb  4 01:20 id_rsa
    -rw-r--r--. 1 root root  580 Feb  4 01:20 id_rsa.pub
    

      

    1.1 添加ansible host

    1、编辑/etc/ansible/hosts,没有则创建些文件。

    格式:【主机名】 【主机地址】 【主机密码】 默认是root用户来进行的

    [sync-ssh-key-servers]
    192.168.10.52 ansible_ssh_user=root ansible_ssh_pass=1q2w3e4r
    

      

    2、编辑/etc/ansible/ansible.cfg, 打开host_key_checking = False选项

    [defaults]
    host_key_checking = False
    

      

    1.2 书写ansible-playbook

    1、编写push.ssh.ymal

    # cat /etc/ansible/roles/push.ssh.ymal
    - hosts: sync-ssh-key-servers(hosts定义)
      user: root (互信用户)
      tasks:
      - name: ssh-copy
        authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
        tags:
          - sshkey
    

      

    2、验证ansible-playbook是否ok

    # 执行命令
    # ansible-playbook /etc/ansible/roles/push.ssh.ymal -f 10 (并发数) [DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [sync-ssh-key-servers] ************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************************************* ok: [192.168.10.52] TASK [ssh-copy] ************************************************************************************************************************************************************************************************************************************************************** changed: [192.168.10.52] PLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************* 192.168.10.52 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

      

    1.3命令验证是否ssh-key执行成功

    #  ansible all -a date
    [DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be 
    disabled by setting deprecation_warnings=False in ansible.cfg.
     [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
    
    192.168.10.52 | CHANGED | rc=0 >>
    Tue Feb  4 02:05:52 EST 2020

    # ansible all -m ping
    [DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation warnings can be
    disabled by setting deprecation_warnings=False in ansible.cfg.
    [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

    192.168.10.52 | SUCCESS => {
    "ansible_facts": {
    "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
    }

      

    二 ansible基本命令

    2.1ansible

    ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。
    Usage: ansible [options]

    1、选项:

    参数

    -a MODULE_ARGS, --args=MODULE_ARGS 
    模块的参数。
    --ask-vault-pass   
    vault 密码。
    -B SECONDS, --background=SECONDS
    异步运行时,多长时间超时。
    -C, --check    
    只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化。
    -D, --diff  
    当更改文件和模板时,显示这些文件得差异,比--check效果好。
    -e EXTRA_VARS, --extra-vars=EXTRA_VARS  
    添加附加变量,比如key=value,yaml,json格式。
    -f FORKS, --forks=FORKS
    指定定要使用的并行进程数,默认为5个。
    -h, --help 
    显示此帮助信息。
    -i INVENTORY, --inventory-file=INVENTORY     
    指定主机清单文件或逗号分隔的主机,默认为/etc/ansible/hosts。
    -l SUBSET, --limit=SUBSET    
    进一步限制所选主机/组模式,只执行-l 后的主机和组。
    --list-hosts
    输出匹配主机的列表。
    -m MODULE_NAME, --module-name=MODULE_NAME    
    要执行的模块,默认为command。
    -M MODULE_PATH, --module-path=MODULE_PATH    
    要执行的模块的路径。
    --new-vault-password-file=NEW_VAULT_PASSWORD_FILE 
    新vault密钥文件。
    -o, --one-line 
    压缩输出,摘要输出.尝试一切都在一行上输出。
    --output=OUTPUT_FILE  
    加密或解密输出文件名 用于标准输出。
    -P POLL_INTERVAL, --poll=POLL_INTERVAL 
    如果使用-B,则设置轮询间隔。
    --syntax-check    
    对playbook进行语法检查,且不执行playbook。
    -t TREE, --tree=TREE 
    将日志内容保存在该目录中,文件名以执行主机名命名。
    --vault-password-file=VAULT_PASSWORD_FILE 
    vault密码文件
    -v, --verbose  
    输出执行的详细信息,使用-vvv获得更多,-vvvv 启用连接调试
    --version  
    显示程序版本号
    

      

    2、链接选项:

    参数

    -k, --ask-pass 
    要求用户输入请求连接密码
    --private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE    
    私钥路径,使用这个文件来验证连接
    -u REMOTE_USER, --user=REMOTE_USER    
    连接用户
    -c CONNECTION, --connection=CONNECTION
    连接类型,默认smart
    -T TIMEOUT, --timeout=TIMEOUT   
    指定默认超时时间,默认是10S
    --ssh-common-args=SSH_COMMON_ARGS
    指定要传递给sftp / scp / ssh的常见参数 (例如 ProxyCommand)
    --sftp-extra-args=SFTP_EXTRA_ARGS    
    指定要传递给sftp,例如-f -l
    --scp-extra-args=SCP_EXTRA_ARGS 
    指定要传递给scp,例如 -l
    --ssh-extra-args=SSH_EXTRA_ARGS 
    指定要传递给ssh,例如 -R
    

      

    3、特权升级选项:

    参数

    -s, --sudo 
    使用sudo (nopasswd)运行操作 , 不推荐使用
    -U SUDO_USER, --sudo-user=SUDO_USER  
    sudo 用户,默认为root, 不推荐使用
    -S, --su     
    使用su运行操作, 不推荐使用
    -R SU_USER, --su-user=SU_USER
    su 用户,默认为root,不推荐使用
    -b, --become 
    运行操作
    --become-method=BECOME_METHOD 
    权限升级方法使用 ,默认为sudo,有效选择:sudo,su,pbrun,pfexec,runas,doas,dzdo
    --become-user=BECOME_USER 
    使用哪个用户运行,默认为root
    --ask-sudo-pass   
    sudo密码,不推荐使用
    --ask-su-pass 
    su密码,不推荐使用
    -K, --ask-become-pass    
    权限提升密码
    

      

    4、示例

    ansible all -m ping
    ansible 192.168.77.* -m ping
    ansible all -m command -a ifconfig
    ansible all -m shell -a "ifconfig eth0 |grep 'inet addr' "
    ansible -i "192.168.77.129,192.168.77.130" 192.168.77.129  -m ping
    ansible -i hosts  all --list-host
    ansible -i hosts -l 192.168.77.130 all -m ping -t /tmp -vvvv
    ansible web -l @retry_hosts.txt --list-hosts
    

      

    2.2ansible-console

    交互式命令执行界面

    Usage: ansible-console <host-pattern> [options]

    选项与ansible一致

    2.3ansible-doc

    该指令用于查看模块信息,常用参数有两个-l和 -s

    Usage: ansible <host-pattern> [options]

    1、选项

    参数

    -h, --help 
    显示此帮助信息
    -l, --list     
    列出可用的模块
    -M MODULE_PATH, --module-path=MODULE_PATH    
    指定到模块库的路径
    -s, --snippet   
    显示playbook制定模块的用法
    -v, --verbose  
    详细模式(-vvv表示更多,-vvvv表示启用连接调试)
    --version  
    显示程序版本号
    

      

    2、示例

    ansible-doc -l
    ansible-doc yum
    ansible-doc yum -s
    

      

    2.4ansible-galaxy

    ansible-galaxy 指令用于方便的从 https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install

    Usage: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [–help] [options] …

    示例:

    ansible-galaxy install aeriscloud.docker  # 下载
    ansible-galaxy  init abc   # 创建角色模板
    

      

    2.5ansible-playbook

    对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。

    Usage: ansible-playbook playbook.yml

    相对于ansible,增加了下列选项:

    1、参数

    --flush-cache 
    清除fact缓存
    --force-handlers  
    如果任务失败,也要运行handlers
    --list-tags 
    列出所有可用的标签
    --list-tasks
    列出将要执行的所有任务
    --skip-tags=SKIP_TAGS   
    跳过运行标记此标签的任务
    --start-at-task=START_AT_TASK  
    在此任务处开始运行
    --step 
    一步一步:在运行之前确认每个任务
    -t TAGS, --tags=TAGS
    只运行标记此标签的任务
    

      

    2、示例

    ansible-playbook -i hosts ssh-addkey.yml    # 指定主机清单文件
    ansible-playbook -i hosts ssh-addkey.yml  --list-tags   # 列出tags
    ansible-playbook -i hosts ssh-addkey.yml  -T install  # 执行install标签的任务
    

      

    2.6ansible-pull

    pull模式在被配置的机器上运行,速度很快。在这种模式下,你需要提供一个git仓库来供Ansible下载来配置你的机器。

    Usage: ansible-pull -U <repository> [options]

    Usage: ansible-vault [create|decrypt|edit|encrypt|rekey|view] [–help] [options] vaultfile.yml

    示例:

    ansible-vault create /tmp/123
    # 创建加密文件
    ansible-vault view  /tmp/123
    # 查看加密文件
    ansible-vault encrypt  /tmp/abc
    # 加密文件
    ansible-vault decrypt  /tmp/abc
    # 解密文件
    

      

    三 ansbile配置文件详解

    ansible配置文件只有一个,即ansible.cfg
    ansible.cfg配置文件可以存在于多个地方,ansible读取配置文件的顺序依次是当前命令执行目录 -> 用户家目录下的.ansible.cfg -> /etc/ansible/ansible.cfg

    3.1defaults

    [defaults]
    
    #inventory      = /etc/ansible/hosts   //定义Inventory
    #library        = /usr/share/my_modules/  //自定义lib库存放目录 
    #remote_tmp     = ~/.ansible/tmp       //零时文件远程主机存放目录
    #local_tmp      = ~/.ansible/tmp       //零时文件本地存放目录
    #forks          = 5                    //默认开启的并发数
    #poll_interval  = 15                   //默认轮询时间间隔
    #sudo_user      = root                 //默认sudo用户
    #ask_sudo_pass = True                  //是否需要sudo密码
    #ask_pass      = True                  //是否需要密码
    #host_key_checking = False             //首次连接是否检查key认证
    #roles_path    = /etc/ansible/roles    //默认下载的Roles存放的目录
    #log_path = /var/log/ansible.log       //执行日志存放目录
    #module_name = command                 //默认执行的模块
    #action_plugins     = /usr/share/ansible/plugins/action //action插件存放目录
    #callback_plugins   = /usr/share/ansible/plugins/callback //callback插件存放目录
    #connection_plugins = /usr/share/ansible/plugins/connection  //connection插件存放目录
    #lookup_plugins     = /usr/share/ansible/plugins/lookup //lookup插件存放目录
    #vars_plugins       = /usr/share/ansible/plugins/vars //vars插件存放目录
    #filter_plugins     = /usr/share/ansible/plugins/filter //filter插件存放目录
    #test_plugins       = /usr/share/ansible/plugins/test //test插件存放目录
    #strategy_plugins   = /usr/share/ansible/plugins/strategy //strategy插件存放目录
    #fact_caching = memory                 //getfact缓存的主机信息存放方式
    #retry_files_enabled = False              
    #retry_files_save_path = ~/.ansible-retry  //错误重启文件存放目录
    

      

    3.2privilege_escalation

    [privilege_escalation]
    #become=True            //是否sudo
    #become_method=sudo     //sudo方式
    #become_user=root       //sudo后变为root用户
    #become_ask_pass=False  //sudo后是否验证密码
    

      

    3.3paramiko_connection

    [paramiko_connection]
    #record_host_keys=False //不记录新主机的key以提升效率
    #pty=False              //禁用sudo功能
    

      

    3.4ssh_connection

    [ssh_connection]
    #pipelining = False   //管道加速功能,需配和requiretty使用方可生效
    

      

    3.5selinux

    [selinux]
    #libvirt_lxc_noseclabel = yes  //selinux配置
    

      

    3.6colors

    [colors]
    #highlight = white
    #verbose = blue
    #warn = bright purple
    #error = red
    #debug = dark gray
    #deprecate = purple
    #skip = cyan
    #unreachable = red
    #ok = green
    #changed = yellow
    #diff_add = green
    #diff_remove = red
    #diff_lines = cyan
    

      

  • 相关阅读:
    最佳买卖股票时期含冷冻期
    牛客网刷题笔记
    交换字符中的元素
    刷题总结
    牛客基础网刷题笔记
    买卖股票的最佳时机 II
    Solution -「51nod 1355」斐波那契的最小公倍数
    Solution -「51nod 1584」加权约数和
    Solution -「CF 1375G」Tree Modification
    Solution -「洛谷 P5787」「模板」二分图(线段树分治)
  • 原文地址:https://www.cnblogs.com/wangshuyang/p/12259415.html
Copyright © 2011-2022 走看看