安装ansible

安装ansible

[root@centos7 ~]# yum install -y ansible
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bfsu.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.neusoft.edu.cn
base                                                                                                                                                                                | 3.6 kB  00:00:00
extras                                                                                                                                                                              | 2.9 kB  00:00:00
updates                                                                                                                                                                             | 2.9 kB  00:00:00
updates/7/x86_64/primary_db                                                                                                                                                         |  13 MB  00:00:10
没有可用软件包 ansible。
错误:无须任何处理

需要先安装

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

配置机器信息

  1. root账号登录ansible机器,创建文件夹playbooks;
  2. playbooks目录下创建名为hosts的文件,内容如下,cdh-group是群组名,该群组内有一个机器配置信息,包含名称、IP地址,SSH端口,SSH账号密码等:
[root@centos7 playbooks]# pwd
/root/playbooks
[root@centos7 playbooks]# cat hosts
[k8s-group]
master0 ansible_host=172.70.10.161 ansible_port=22 ansible_user=root ansible_password=******
master1 ansible_host=172.70.10.162 ansible_port=22 ansible_user=root ansible_password=******
node1 ansible_host=172.70.10.163 ansible_port=22 ansible_user=root ansible_password=******
node2 ansible_host=172.70.10.164 ansible_port=22 ansible_user=root ansible_password=******
node3 ansible_host=172.70.10.165 ansible_port=22 ansible_user=root ansible_password=******
node4 ansible_host=172.70.10.166 ansible_port=22 ansible_user=root ansible_password=******
  1. laybooks目录下创建名为ansible.cfg的文件,内容如下,这是个ansible的配置文件,执行ansible命令时用到,这里面指定了主机信息在hosts文件中查找:
[root@centos7 playbooks]# cat ansible.cfg
[defaults]
inventory = ~/playbooks/hosts
host_key_checking = False
forks = 6

体验

[root@centos7 playbooks]# ansible -i /root/playbooks/hosts all -m shell -a  "free -g"
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
master0 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7
master1 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7
node2 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7
node4 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7
node3 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7
node1 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:             15           0          12           0           2          14
Swap:             7           0           7

体验playbook

(base) [root@node1 playbooks]# cat install_docker.yaml
- name: install docker
  hosts: k8s-group
  gather_facts: True
  tasks:
  - name: add repo
    shell: cd ~ && mkdir tmp && cd ~/tmp && wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && mv docker-ce.repo /etc/yum.repos.d/
  - name: install docker
    yum: name=docker-ce
  - name: add systemctl
    shell: systemctl start docker && systemctl enable docker

执行:

(base) [root@node1 playbooks]# ansible-playbook install_docker.yaml
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

PLAY [install k8s] ****************************************************************************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************************************************************************
ok: [node4]
ok: [node2]
ok: [node1]

TASK [add repo] *******************************************************************************************************************************************************************************************
changed: [node4]
changed: [node2]
changed: [node1]

TASK [install docker] *************************************************************************************************************************************************************************************
ok: [node4]
ok: [node2]
ok: [node1]

TASK [add systemctl] **************************************************************************************************************************************************************************************
changed: [node2]
changed: [node4]
changed: [node1]

PLAY RECAP ************************************************************************************************************************************************************************************************
node1                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node2                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node4                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

备注:

# ansible-playbook a.yml --syntax-check    #检查yaml文件的语法是否正确
# ansible-playbook a.yml --list-task       #检查tasks任务
# ansible-playbook a.yml --list-hosts      #检查生效的主机
# ansible-playbook a.yml --start-at-task='Copy Nginx.conf'     #指定从某个task开始运行

同步目录

(base) [root@node1 playbooks]#  ansible -i /root/playbooks/hosts all -m copy -a "src=/root/tmp/ dest=/root/tmp/"
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
node4 | CHANGED => {
    "changed": true,
    "dest": "/root/tmp/",
    "src": "/root/tmp/"
}
node2 | CHANGED => {
    "changed": true,
    "dest": "/root/tmp/",
    "src": "/root/tmp/"
}
node1 | SUCCESS => {
    "changed": false,
    "dest": "/root/tmp/",
    "src": "/root/tmp/"
}

fileinline模块

名称必选默认值可选值备注
backrefsnonoyes/no如果打开这个标记,backrefs会改变模块的一些操作:insertbefore和insertafter参数会被忽略。当regexp不匹配文件中的任何行时,文件不会做任何修改,否则 使用扩展的line参数 替换 最后一个匹配正则表达式的行
backupnonoyes/no用于创建一个包含时间戳信息的备份文件。以便在错误的修改了文件的时候,能够找回原始的文件
createnonoyes/no与state=present一起使用。如果指定了这个参数,当要修改的文件不存在的时候,会创建它。否则会报错。
groupno设置文件/目录的所属组
insertafternoEOFEOF/regex当regexp不匹配文件中的任何行的时候,会将新行插入到其所指定的正则表达式匹配的行中的最后一行的后面。insertafter也支持一个特殊的值:EOF(代表文件的末尾)。若没有匹配的行,那么就会插入EOF
insertbeforenoBOF/regex当regexp不匹配文件中的任何行的时候,会将line参数所指定的行,插入到insertbefore所指定的正则表达式匹配的行中的最后一行的前面,当insertbefore所指定的正则表达式不匹配任何行时,会插入到文件的末尾,同时insertbefore还可以是一个特殊的值:BOF(代表文件的开始);否则,会使用line参数所指定的行替换regexp所匹配的行中的最后一行。
lineno要插入或者替换的行。如果设置了backrefs参数,那么line中可以包含位置分组或命名分组,lineinfile模块会使用regexp捕获的分组填充它们
modeno“设置文件权限,模式实际上是八进制数字(如0644),少了前面的零可能会有意想不到的结果。从版本1.8开始,可以将模式指定为符号模式(例如u+rwx或u=rw,g=r,o=r)”
othersnofile模块的其他参数可以在这里使用
ownerno设置文件/目录的所属用户
pathyes"要修改的文件,也可以使用dest
regexpno用于搜索文件中的每一行的正则表达式。对于state=present,这个正则表达式所匹配的行中的最后一行会被替换;对于state=present,会删除所有匹配的行
statenopresentpresent/absent用于设置 新增或替换一行,还是删除行
unsafe_writesnoyes/no是否以不安全的方式进行,可能导致数据损坏
validatenoNone复制前是否检验需要复制目的地的路径

prompt提示变量----根据提示输入变量的值

---
- hosts: test1
  vars_prompt:
    - name: iname
      prompt: "请输入用户名"
      private: no                 #回显用户名
    - name: ipasswd
      prompt: "请输入密码"
      private: yes                #不显示密码
  tasks:
    - name: Create a user
      user:
        name: "{{iname}}"
        password: "{{ipasswd | password_hash('sha512')}}"

5.vars_files—单独定义变量文件
1.#先定义一个变量文件variables.yml


iname: ice #变量名称是自定义的
ipass: ‘123456’
2.#引用定义文件

  • host: test1
    var_files: variables.yml
    tasks:
    • name: create user
      user:
      name: “{{iname}}”
      password: “{{ipass | password_hash(‘sha512’)}}”
      6.-e------定义变量
      ————————————————
      版权声明:本文为CSDN博主「井底蛙跳出来了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/chenzhiweiguang/article/details/122861809
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值