centos7下部署Ansible

操作系统及Python版本信息

centos7下部署Ansible_第1张图片

Ansible 环境部署

简单地介绍 Ansible 基本观念和怎么安装、设定 Ansible;

Ansible 是怎么运作的?

在 Ansible 的世界里,我们会通过 inventory 档案来定义有哪些 Managed node (被控端),并借由 SSH 和 Python 进行沟通。换句话说,当 Control Machine (主控端) 可以用 SSH 连上 Managed node,且被连上的机器里有预载 Python 时,Ansible 就可以运作了!

怎么安装 Ansible?

在一般的情况下,我们只需在 Control Machine 里安装 Ansible 即可,因为 GNU/Linux 和 macOS 的 Managed node 都早已预载了 Python 2.5 以上的版本,且开通了 SSH 连线的条件。

centOS(Yum)

1、新增epel-release第三方套件来源。

[root@server ~]# yum install -y epel-release

2、安装Ansible和openssh-server。

[root@server ~]# yum install -y ansible openssh-server

pip方式安装

Ansible 近来的释出速度很快,若想追求较新的版本可改用 Pip 的方式进行安装。

需请先安装 pip,已安装者请忽略。

编译安装:https://blog.csdn.net/weixin_44897792/article/details/97803549

[root@server ~]# yum install -y python-pip

升级pip

[root@server ~]# pip install -U pip

已经安装过pip的可以通过以下命令更新

[root@server ~]# pip install --upgrade pip

centos7下部署Ansible_第2张图片

安装Ansible(也可以使用yum或者编译安装都可以)

[root@server ~]# pip install ansible

测试:

已上的设置都完成了,您可以试著在终端机里用 Ansible 呼叫本机印出 Hello World

vim 编辑 hosts 配置文件    下方添加你要远程连接也就是被控端的服务器IP地址 、便于 Ansible控制

[root@server-7 ~]# vi /etc/ansible/hosts 

 配置秘钥对  

在主控服务器上操作,一路回车即可;

参数说明:

-t 这种加密是用数字加密的

dsa 一种加密方式

centos7下部署Ansible_第3张图片

检查秘钥对是否生成:

[root@server-7 ~]# ll .ssh/
total 16
-rw------- 1 root root 1609 Jul 25 16:54 authorized_keys
-rw------- 1 root root  668 Aug  2 18:20 id_dsa
-rw-r--r-- 1 root root  607 Aug  2 18:20 id_dsa.pub
-rw-r--r-- 1 root root 1545 Aug  2 18:13 known_hosts

公钥上传 到被控端 

公钥 和  私钥  的区分   ;
后缀为  .pub  的就是公钥 , 反之即为私钥 ,我们上传公钥到被控端主机上 。

centos7下部署Ansible_第4张图片

可以编辑以下hosts文件

[root@server-7 ~]# vi /etc/hosts

centos7下部署Ansible_第5张图片

验证是否实现基于密钥访问服务器,即实现非交互方式:

centos7下部署Ansible_第6张图片

测试批量执行 

因为模块中只添加了一个ip 所以只能看到一个

centos7下部署Ansible_第7张图片

ping 模块

用途:尝试连接被控制端主机,成功返回pong(ping--pong是一对的)
使用方法:

centos7下部署Ansible_第8张图片

Ansible 常用模块及作用

    command   --- 执行命令

    shell     --- 执行脚本 执行命令

    script    --- 执行脚本

    yum     --- 模块

    file --- 模块 设置文件属性

cron模块

[root@server-7 ~]# ansible-doc -s cron
- name: Manage cron.d and crontab entries
  cron:
      backup:                # (yes/on)如果设置了,则会在修改远程cron_file前备份这些文件
      cron_file:             # 自定义cron_file的文件名,使用相对路径则表示在/etc/cron.d/中,必选同时制定user选项
      minute:                # 分(0-59,*,/N),不写时默认为*
      hour:                  # 时(0-23,*,/N),不写时默认为*
      day:                   # 日(1-31,*,/N),不写时默认为*
      month:                 # 月(1-12,*,/N),不写时默认为*
      weekday:               # 周(0-6 for Sunday-Saturday,*),不写时默认为*
      disabled:              # 禁用crontab中的某个任务,要求state=present
      env:                   # (yes/on)设置一个环境变量,将添加在crontab的顶端,使用name=value定义变量名和值.
      job:                   # 需要执行的命令,如果设置了env,则表示环境变量的值,此时job="xxxx"等价于value="xxxx"
      name:                  # 描述crontab的字符串,但如果设置的是env,则name为环境变量的名称,要求state=absent,注意,若没有设置name,且state=present,则总会创建一条新的job条目,即使cron_file中已经存在同样的条目.
      reboot:                # 如果任务应该在重新启动时运行。不赞成使用此选项。用户应该使用special_time.
      special_time:          # 定时任务的别称,用于定义何时运行job条目.有效值有reboot/hourly/daily/weekly/monthly/yearly/annually
      state:                 # job或者env的状态是present(默认)还是absent,present用于创建,absent用于删除
      user:                  # 指定那个用户的crontab任务将要被修改,默认root.

user 模块

用途:user 模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作
使用方法:

[root@server-7 ~]# ansible-doc -s user
- name: Manage user accounts
  user:
      append:                # 如果用户原本就存在多个附加组,那么当使用 groups 参数设置附加组时,当前设置会覆盖原来的附加组设置
                             # 如果不想覆盖原来的附加组设置,需要结合 append 参数,将 append 设置为 yes,表示追加附加组到现有的附加组设置,append 默认值为 no.
      comment:               # 设置用户的描述信息
      create_home:           # 创建家⽬录,或者已有的⽤户但家⽬录不存在也会创建。设置为no则不创建家⽬录
      expires:               # 此参数用于指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列
                             # 比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的 unix 时间戳,使用命令 “date -d 2018-12-31 +%s” 获取到的时间戳为1546185600,
                             # 所以,当设置 expires=1546185600 时,表示用户的过期时间为2018年12月31日0点0分,
                             # 设置成功后,查看远程主机的 /etc/shadow 文件,对应用户的第8八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix 时间戳的值会自动转换为天数,我们不用手动的进行换算,
                             # 目前此参数只支持在 Linux 和 FreeBSD 系统中使用。
      force:                 # 强制删除用户、用户目录,只在state=absent中生效,相当于userdel --force命令
      generate_ssh_key:      # 是否为相关用户生成SSH密钥。这将“不会”覆盖现有SSH密钥.
      group:                 # 设置⽤户的primary group(主组).
      groups:                # 将⽤户加⼊到辅助组列表中。如果设置"groups=",则会将此⽤户从所有辅助组中移除
      home:                  # 指定要创建的家⽬录路径
      move_home:             # 如果设置为yes,则"home="则表⽰将家⽬录移动到此选项指定的路径下
      name:                  # (必选项)要创建、修改、移除的⽤户名.
      non_unique:            # 当与 -u 选项一起使用时,该选项允许将用户ID更改为非唯一值
      password:              # 设置⽤户密码。此处只能使⽤加密密码作为值.
      password_lock:         # 锁定用户的密码(等价于usermod -L命令)这个选项并不总是意味着用户不能通过其他方法登录。这个选项没有禁用用户,只锁定密码.
      remove:                # 配合'state=absent'时,等价于'userdel --remove',即删除家⽬录和邮件列表
      seuser:                # 在启用selinux的系统上设置seuser类型.
      shell:                 # 设置⽤户的shell
      ssh_key_bits:          # 当 generate_ssh_key 参数的值为 yes 时,使用此参数指定要创建的SSH密钥中的位数.
      ssh_key_comment:       # 当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置公钥中的注释信息。但是如果同名的密钥对已经存在,则并不会修改原来的注释信息,即不做任何操作。
                             # 当不指定此参数时,默认的注释信息为”ansible-generated on 远程主机的主机名.
      ssh_key_file:          # 当 generate_ssh_key 参数的值为 yes 时,使用此参数自定义生成 ssh 私钥的路径和名称,对应公钥会在同路径下生成,公钥名以私钥名开头,以”.pub”结尾.
      ssh_key_passphrase:    # 当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置私钥的密码。但是如果同名的密钥对已经存在,则并不会修改原来的密码,即不做任何操作.
      ssh_key_type:          # 当 generate_ssh_key参数的值为yes时,在创建证书时,使用此参数设置密钥对的类型。默认密钥类型为 rsa,但是如果同名的密钥对已经存在,并不会对同名密钥做任何操作.
      state:                 # 创建⽤户(present)还是删除⽤户(absent)。默认为present.
      system:                # 设置为yes表⽰创建⼀个系统⽤户,只能⽤于创建,不能⽤于修改已有⽤户为系统⽤户
      uid:                   # 设置用户的UID
      update_password:       # user是幂等模块,"always"将总是修改密码。"on_create"将只在创建⽤户时设置密码

等等.......

 

参考:https://www.w3cschool.cn/automate_with_ansible/automate_with_ansible-qzva27p4.html

你可能感兴趣的:(Linux,ansible部署)