[Ansible 면접문제!]

19896 단어 ansible
1. Ansible은 무엇입니까?
Ansible는 Python 개발을 바탕으로 많은 운영 도구의 장점을 모은 자동화 운영 도구로 대량 시스템 설정, 대량 프로그램 배치, 대량 운행 명령 등 기능을 실현할 수 있다.또한 이것은 모듈 작업을 바탕으로 하는 것으로 그 자체에 대량 배치 능력이 없다. 진정으로 대량 배치는 ansible가 실행하는 모듈이고 ansible는 하나의 프레임워크를 제공할 뿐이다.
2. Ansible 일반 모듈(최소 6개)?
command ping yum copy service shell file replace user group
3、Ansible 모듈이란?
모듈은 Ansible의 작업 단위로 간주됩니다.각 모듈은 Python, Perl, Ruby, bash 등 표준 스크립트 언어로 작성할 수 있는 독립된 것이 대부분이다.모듈의 중요한 속성은 幂 등성으로 한 조작이 여러 번 실행되면 부작용이 생기지 않는다는 것을 의미한다.
4、Ansible의 플레이북스는 무엇입니까?
Playbooks는 Ansible의 구성, 배치, 편성 언어로 YAML 언어를 기반으로 작성되었습니다.원격 시스템에서 구현하려는 정책을 설명하거나 일반적인 IT 프로세스의 단계를 설명할 수 있습니다.
5. Ansible이 어떻게 일을 하는지 설명합니까?
Ansible은 노드와 제어 장치로 구성되어 있습니다.제어기기는 Ansibles가 설치된 곳으로 노드는 SSH를 통해 관리된다.SSH 프로토콜을 통해 제어 시스템은 원격 노드에 임시로 저장된 모듈을 배치할 수 있다.제어기계가 ansible 또는 ansible-playbooks를 사용하여 서버 단말기에 입력한 Ansible 명령집이나 플레이북을 사용하면 Ansible는 미리 짜인 규칙에 따라 PLAYbook를 하나하나 플레이로 분해하고 플레이를 Ansible가 식별할 수 있는 작업tasks로 구성하여 작업에 관련된 모든 MODULES와 PLUGINS를 호출한다.호스트 목록 INVENTORY에 정의된 호스트 목록에 따라 SSH 프로토콜을 통해 작업 집합을 임시 파일이나 명령으로 원격 노드로 전송하고 결과를 되돌려줍니다. 임시 파일이면 실행이 끝난 후 자동으로 삭제됩니다.
연습 문제:
1. ansible는 copy 모듈을 사용하여/opt/aa.txt를/home/jack으로 복사
ansible node1 -m copy -a 'src=/opt/aa.txt dest=/home/jack/'
[root@manager ~]# ansible node1 -m copy -a 'src=/opt/aa.txt dest=/home/jack/'
node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/home/jack/aa.txt", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1592384605.11-1992-33979510717979/source", 
    "state": "file", 
    "uid": 0
}
[root@manager ~]# ansible node1 -a 'ls -l /home/jack'
node1 | CHANGED | rc=0 >>
    0
-rw-r--r-- 1 root root 0 6   17 17:03 aa.txt

2. file 모듈을 사용하여/home/jack/aa를 정의합니다.txt의 권한은 777이고 소유자는 jack이며 소속 그룹은 jack이다
ansible node1 -m file -a 'path=/home/jack/aa.txt owner=jack group=jack mode=0777’
[root@manager ~]# ansible node1 -m file -a 'path=/home/jack/aa.txt owner=jack group=jack mode=0777'
node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "gid": 1001, 
    "group": "jack", 
    "mode": "0777", 
    "owner": "jack", 
    "path": "/home/jack/aa.txt", 
    "size": 0, 
    "state": "file", 
    "uid": 1001
}
[root@manager ~]# ansible node1 -a 'ls -l /home/jack'
node1 | CHANGED | rc=0 >>
    0
-rwxrwxrwx 1 jack jack 0 6   17 17:03 aa.txt

3,yum모듈을 사용하여httpd서비스를 설치
ansible node1 -m yum -a 'name=httpd state=present’
[root@manager ~]# ansible node1 -m yum -a 'name=httpd state=present'

node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "changes": {
        "installed": [
            "httpd"
        ]
    }, 
    "msg": "Repository base is listed more than once in the configuration
"
, "rc": 0, "results": [ "Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.yun-idc.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-93.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
httpd x86_64 2.4.6-93.el7.centos base 2.7 M

Transaction Summary
================================================================================
Install 1 Package

Total download size: 2.7 M
Installed size: 9.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : httpd-2.4.6-93.el7.centos.x86_64 1/1
Verifying : httpd-2.4.6-93.el7.centos.x86_64 1/1

Installed:
httpd.x86_64 0:2.4.6-93.el7.centos

Complete!
"
] } [root@manager ~]# [root@manager ~]# ansible node1 -a 'rpm -q httpd' [WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'. If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message. node1 | CHANGED | rc=0 >> httpd-2.4.6-93.el7.centos.x86_64

4,cron 모듈을 사용하여 임무를 정의하고 매주 금요일 14시 30분에 백업/var 수행
ansible node1 -m cron -a 'name=“crontab test” weekday=5 hour=14 minute=30 job="/usr/bin/tar -czf/opt/var.tar.gz/var"'
[root@manager ~]# ansible node1 -m cron -a 'name="crontab test" weekday=5 hour=14 minute=30 job="/usr/bin/tar -czf /opt/var.tar.gz /var"'
node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "envs": [], 
    "jobs": [
        "crontab test"
    ]
}

5.user 모듈을 사용하여 사용자student를 만들고 시스템 사용자로 만들며 그룹은 루트이고 uid는 2000입니다
ansible node1 -m user -a 'name=student system=yes group=root uid=2000’
[root@manager ~]# ansible node1 -m user -a 'name=student system=yes group=root uid=2000'
node1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "comment": "", 
    "create_home": true, 
    "group": 0, 
    "home": "/home/student", 
    "name": "student", 
    "shell": "/bin/bash", 
    "state": "present", 
    "system": true, 
    "uid": 2000
}
[root@manager ~]# ansible node1 -m shell -a 'id student'
node1 | CHANGED | rc=0 >>
uid=2000(student) gid=0(root)  =0(root)
)

좋은 웹페이지 즐겨찾기