Ubuntu 下 Ansible 使用记录

2018年05月08日 7249点热度 0人点赞 1条评论

环境:

  • Ubuntu: 18.04 LTS
  • Ansible: 2.5.2
  • Python: 2.7.15rc1

 

安装:

apt-get install ansible
或
pip install ansible

 

配置:

vi /etc/ansible/hosts

修改一下远程配置,把需要远程的服务器地址填入(可以自己配置一个组)

# This is the default ansible 'hosts' file.
# 
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

[localserver]
192.168.137.139
192.168.137.140
# Ex 1: Ungrouped hosts, specify before any group headers.

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

这里我添加了一个localserver组,加入了本地测试用安装的虚拟机地址(蓝色部分)

保存并退出

实际服务器测试当中,还会出现以下错误

FAILED! => {"failed": true, "msg": "ERROR! Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."}

现在服务器都会开启密钥检查(因为测试环境仅为账号密码登陆所以不考虑公钥验证,后期遇到会添加)

如出现上述错误,则还需修改配置文件

 vi /etc/ansible/ansible.cfg


....
# option lets you increase or decrease that
# timeout to something more suitable for the
# environment.
# gather_timeout = 10

# additional paths to search for roles in, colon separated
#roles_path    = /etc/ansible/roles

# uncomment this to disable SSH key host checking
#host_key_checking = False

# change the default callback, you can only have one 'stdout' type  enabled at a time.
#stdout_callback = skippy
.....

去掉 host_key_checking = False 前面的注释即可(红色部分)

 

测试:

ansible localserver -m ping -u root -k

SSH password: 
192.168.137.140 | SUCCESS => {
 "changed": false, 
 "ping": "pong"
}
192.168.137.139 | SUCCESS => {
 "changed": false, 
 "ping": "pong"
}

localserver 就是刚才配置的组,也可以指定一个服务器,直接键入IP就行

ansible 192.168.137.139 -m ping -u root -k

SSH password: 
192.168.137.139 | SUCCESS => {
 "changed": false, 
 "ping": "pong"
}

参数说明:-m 后接命令  -u 用户名 -k 连接前询问密码(因为本地测试没使用公钥认证,进使用账号密码登陆)

 

基础命令

远程查询以下剩余内存(执行命令)

root@server:~# ansible 192.168.137.139 -m command -a "free -m" -k
SSH password: 
192.168.137.139 | SUCCESS | rc=0 >>
 total used free shared buff/cache available
Mem: 961 231 210 12 519 569
Swap: 2043 0 2043

复制文件

root@server:~# touch test_file
root@server:~# ansible 192.168.137.139 -m copy -a "src=/root/test_file dest=/root" -k
SSH password: 
192.168.137.139 | SUCCESS => {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/root/test_file", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1525760764.39-252880811110737/source", 
    "state": "file", 
    "uid": 0
}

查询文件信息(状态)

root@server:~# ansible 192.168.137.139 -m stat -a "path=/root/test_file" -k
SSH password: 
192.168.137.139 | SUCCESS => {
    "changed": false, 
    "stat": {
        "atime": 1525760766.1826777, 
        "attr_flags": "e", 
        "attributes": [
            "extents"
        ], 
        "block_size": 4096, 
        "blocks": 0, 
        "charset": "binary", 
        "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
        "ctime": 1525760766.1826777, 
        "dev": 64768, 
        "device_type": 0, 
        "executable": false, 
        "exists": true, 
        "gid": 0, 
        "gr_name": "root", 
        "inode": 274007, 
        "isblk": false, 
        "ischr": false, 
        "isdir": false, 
        "isfifo": false, 
        "isgid": false, 
        "islnk": false, 
        "isreg": true, 
        "issock": false, 
        "isuid": false, 
        "mimetype": "inode/x-empty", 
        "mode": "0644", 
        "mtime": 1525760765.906087, 
        "nlink": 1, 
        "path": "/root/test_file", 
        "pw_name": "root", 
        "readable": true, 
        "rgrp": true, 
        "roth": true, 
        "rusr": true, 
        "size": 0, 
        "uid": 0, 
        "version": "3915031093", 
        "wgrp": false, 
        "woth": false, 
        "writeable": true, 
        "wusr": true, 
        "xgrp": false, 
        "xoth": false, 
        "xusr": false
    }
}

远程下载

ansible 192.168.137.139 -m get_url -a "url=https://x-item.com dest=/root/virace.html" -k

远程包管理

ansible 192.168.137.139 -m yum -a "name=python3" -k

未完待续

文章评论

  • 阿瓦达
    2021年11月20日

    评论测试