2017년 8월 20일 일요일

[프로그래밍] 코드 하이라이트 2번째 시간

- 2 개의 댓글
계속 css 스타일을 적용해서 알아서 하도록 했더니...
생각보다 YAML을 제대로 해석하지 못하고...전혀 아름답지도..코드도 알아보기 힘들게 만들어주는 결과가 나왔다..
다른 불편함도 있고..띄어쓰기가 이상하게 적용되는...


그래서...HTML 코드 변환을 써서 그냥 코드로 박아버리기로 했다.

그래서 사용하는 사이트가..http://hilite.me/ 로 내가 원하는 코드를 입력하고 스타일을 선택하면 그대로 HTML로 바꾸어 주는 아주 쉬운 사이트다.

이게 휠씬~~~~! 나은거 같다..CSS는 YAML하고는 별로...
python 같은 언어야 워낙에 유명하니까..그냥 왠만하면 CSS로 쉽게 되는데...

앞으로는 이걸 써야 겠다 :)

사용 및 선택한 내용 
Language : YAML
Style : murphy
Line numbers : check!




[Continue reading...]

[Ansible] NXOS의 running-config를 tftp로 자동으로 백업하기

- 0 개의 댓글


오늘 비 참 많이 오네요. 요즘 날씨는 동남아 날씨 같은....

아 주제는 이게 아니라...NXOS의 가장 중심이 되는 구성파일을 자동으로 tftp 서버로 백업해 보는 것을 할 예정입니다.

 

이건 이렇게 구동 됩니다.

CentOS7에 tftp 서버를 구축하고 여기서 앤서블 플레이북을 만들고 nxos switch 전송해서 백업을 다시 tftp 서버쪽으로 요청하는 겁니다.



CentOS에서 구성해 놓고 요청 보내서 (nxos)로 그리고 다시 그걸 centos로 받는거죠~!
(여기서 CentOS는 192.168.1.10이고 nxos의 mgmt0는 192.168.1.202입니다~!)

주의할 점이 몇가지 있는데..
1. /etc/ansible/hosts에 등록 되어 있어야함
2. 키 교환이 이루어진 상태여야 함
3. 여긴 고정이지만, 필요하다면 다이나믹하게 구성할수도 있음

주의할 점 적용 전에 실행하면 (호스트가 없어서 결과가 안 나옴)




 그 이후에 실행하면~!



결과 확인 
잘 백업된 NXOS의 Running-config ~!



[코드]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
- name: Setup tftp to backup NXOS running-config 

  hosts: localhost
  gather_facts: no
  tasks:
    - name: Install xinetd & tftp-server
      become: yes
      yum:
        name: "{{ item }}" 
        state: present
      with_items: 
        - "xinetd"
        - "tftp-server"
   
    - name: make tftp_shared_dirctory
      file:
        path: /home/vagrant/tftp_shared
        state: directory
        mode: 0777

    - name: modify tftp's config (1)
      become: yes
      replace:
         path: /etc/xinetd.d/tftp
         regexp: 'root'
         replace: 'vagrant'
        
    - name: modify tftp's config (2)
      become: yes
      replace:
         path: /etc/xinetd.d/tftp
         regexp: '-s /var/lib/tftpboot'
         replace: '-c -p -u vagrant -s /home/vagrant/tftp_shared'

    - name: modify tftp's config (3)
      become: yes
      lineinfile:
         path: /etc/xinetd.d/tftp
         regexp: 'disable'
         line: '        disable                 = disable'
 
    - name: modify tftp service's config
      become: yes
      replace:
         path: /usr/lib/systemd/system/tftp.service
         regexp: '-s /var/lib/tftpboot'
         replace: '-c -p -u vagrant -s /home/vagrant/tftp_shared'

    - name : selinux change to permissive 
      become: yes
      selinux: policy=targeted state=permissive
         
    - name : services deamon restart 
      become: yes
      systemd: 
        state: restarted
        daemon_reload: yes
        name: tftp

    - name : services restart 
      become: yes
      service :
        name : xinetd
        state : restarted
        
- name: Request to backup NXOS's running-config
  hosts: NXOS
  gather_facts: no
  connection: local
  tasks:
    - name: running-config backup
      nxos_command:
        commands: 'copy running-config tftp://192.168.1.10/n9k2-running-config vrf management'
        username: "admin"
        password: "vagrant"
        transport: cli

- name: selinux restore        
  hosts: localhost
  gather_facts: no
  tasks:
    - name : selinux change to enforcing
      become: yes
      selinux: policy=targeted state=enforcing
[Continue reading...]

2017년 8월 17일 목요일

[Ansible] 한번에 운영체제 별로(nxos포함) timezone 세팅

- 0 개의 댓글


네트워크 부분만 짜른 내용입니다. 
그 외에 센트, 우분투, 윈도우는 쉽게 잘 동작합니다. ~!

네트워크 같은 경우는 내부의 ntp 서버에서 시간을 받아오는 경우가 더 많아서 해당 경우처럼 구성하고 테스트했습니다.

아래의 내용은 시작전에 ntp상태를 확인한거고, 



그리고 모두 돌린 이후에 동작을 확인 한 것 입니다. 



네트워크 엔지니어 여러분 쉽고 편하게 ~! 일합시다~ :)



[코드]

---
- name: setup timezone

  hosts: CentOS:Ubuntu
  gather_facts: no
  become: yes
  tasks:
    - name: set timezone to Asia/Seoul
      timezone: name=Asia/Seoul

- hosts: Win
  gather_facts: no
  tasks:
    - name: set timezone to 'Korea Standard Time' (GMT+09:00)
      win_timezone: timezone='Korea Standard Time'

- name: NTP for NXOS
  gather_facts: no
  hosts: NXOS
  connection: local
  tasks:
    - name: sshkey gen
      local_action: shell ssh-keyscan 192.168.1.202 >> ~/.ssh/known_hosts
      #local_action: shell ssh-keyscan {{ inventory_hostname }} >> ~/.ssh/known_hosts
    - name: ntp configuration
      nxos_config:
        lines: 'ntp server 192.168.1.10 use-vrf management'
        save: yes
        username: "admin"
        password: "vagrant"
        transport: cli
    - name: timezone
      nxos_config:
        lines: 'clock timezone UTC 9 0'
        save: yes
        username: "admin"
        password: "vagrant"
        transport: cli
[Continue reading...]

[Python/Ansible] 윈도우와 네트워크 모듈에 대해서...

- 0 개의 댓글


앤서블로 이것저것 관리하다보면..

황당한 일을 종종 겪게 된다.
어제 겪었던...앤서블로는 실행이 되는데, 플레이북으로는 안된다던가...

모듈마다 문자열 처리하는 방식이 틀리다던가 하는 일들 말이다.

이게 웃긴게...센트OS 우분투는 왠만하면 다 잘 된다..
즉 범용 리눅스는 다 큰 문제 없이 모든 걸 다 잘 처리해 놨다.


그런데 문제는 마이너들....
윈도우나 네트워크 모듈 같은 것들 말이다..

그러나..이건 반대로 생각하면 기회가 아닐까 -_-?

내가 PR(pull request)할수 있는 기회 말이다..

이 글은 코리아 파이썬 유저 그룹에 포스팅 할 예정이긴 한데..
그 이유는 다른 것 개발하고 그러는 것도 좋은데, 이런 것에도 관심을 가지면..
재미있을 것 같다는 것이다..

버그성 기능을 나열해 보면..
1. win_command

이게 ansible(ans는 약자로 등록했다)로 바로 실행하면  플레이북에서도 똑같이 동작해야 하는데...

플레이북에서
"net use z: \\\192.168.1.10/home/vagrant/nfs_shared"
로 등록하고 실행하면 에러가 난다.

net use "z:" "\\192.168.1.10/home/vagrant/nfs_shared"로 해야만 에러가 나지 않는다.

## 수정수정 ##
이건 powershell스크립트로 쓰네요 python의 탈을 쓴 ps1...인듯;;;
Using module file /usr/lib/python2.7/site-packages/ansible/modules/windows/win_command.ps1

2. nxos_config 


/usr/lib/python2.7/site-packages/ansible/modules/network/nxos/nxos_config.py
이 모듈을 사용하여 nxos를 config하게 되는데...

문자열 처리가 좀 서투르다..
무슨 얘기냐면...

이건 에러가 안 나는데..
lines: 'ntp server 192.168.1.10 use-vrf management'

이건 에러가 난다.
lines: ntp server 192.168.1.10 use-vrf management

당연한거 아닌가요 문자열을 묶어 줘야 하잖나요 라고 할수 있겠지만...
대부분의 리눅스에서 제공하는 모듈은 안 묶어줘도 된다.

또 위와 같이 문자열을 다르게 보는 모듈도 있고...제 각각이다..
특히  lineinfile과 blockinfile 모듈은 정말 아름답게 혼자서 잘 동작한다.
옵션도 엄청 많고....

개발할 소지가 충분히 있다는 뜻이다..
그래서 다른 파이썬 분야도 많지만 누군가는 관심을 가져주기를 하는 마음에서...하하하;;

PS : 네트워크 모듈 주소
https://github.com/ansible/ansible/tree/devel/lib/ansible/modules/network

[Continue reading...]

[Ansible] Linux(센트,우분투)와 윈도우에 NFS 디렉터리를 자동으로 마운트 하기

- 0 개의 댓글



굉장히 오랜만에 글을 쓰네요 :)
하하하 ;;; pycon2017도 있었고...취업을 할려고 하는 것도 있었고 해서리 -_-;

특별히 아직도 갈 곳이 없네요 ㅎㅎㅎㅎㅎ 그래도 우울해 하지 않으렵니다. ~!

일단 앤서블 초중급과정을 만들고 있는데요 (중급 과정인가...아직 과정 수준이 미정이라 -_-)

ntp sync만 할려고 했더니...왠지 없어 보이고 누군가가 '너무 쉬워요' 하는 메아리 같은게 들려서....

nfs를 마운트 하기로 결정했습니다..
이게 나락의 시작...-_-

리눅스는 아주아주 순조롭게 넘어 갔는데....거의 1-2시간만에 센트 우분투 다 완성..



문제는 윈도우더라고요...

이게 좀 코드를 뜯어 보니...win_shell, win_command가 permission을 지원하는게 이상 요상해서...제대로 동작이 안됨...

그래서 나중에는 내가 파이썬도 깔고, ssh 서버도 돌려서 linux에 쉘처럼 돌릴테다..했는데
이건 코드에 import들이 틀려서 오류부터 시작하고...


이래저래 별별 삽질을 거치고 나서..



이렇게 unavailable이 나오는건 어쩔수 없구나...
 - net use or mount로 확인 from windows system
(vagrant user로 할 경우에는 -_-;;;; / administrator는 다 잘됨)


logoff와 login 신공으로 마무리 합니다.


이걸 할려고 'net use', 'New-PSDrive'를 모두 연구 사용해 봤는데요..
unavailable을 바꿀수가 없음..

자동화가 목적이니 그냥 저 상태에서 다시 시스템을 제 기동하기로 합니다.
NFS 관련 서비스를 아무리 제 시작해도 해결이 안됨 -_-;

재밌는건 그냥 명령창에서 바로 실행하면 다 잘된다는거..!!!
고로 아직 win_command나 win_shell이 문제가 있는...언젠간 수정되겠지만..지금은 방법이 없네용;;
mount 192.168.1.10:/home/vagrant/nfs_shared z:
net use z: \\192.168.1.10/home/vagrant/nfs_shared

[NFS 서버에서]


[NFS Client 중에서/윈도우]


추가 mount로 하는 경우에는 persistent가 안되서 startup:shell에 넣어야 하는데 ..구찮아서....net use로 변경..;;;
그리고 삽질 하면서 발견한건데..ansible과 ansible-playbook에서 win_command가 다르게 parsing함...하하하....당황스럽네요..


이대로 playbook에 넣으면 에러남...그래서 쪼개고 테스트해서 되게 만듬...
윈도우쪽은 좀 심하게 문제가 많은듯....

[코드]

---
- name: Setup for nfs server & clients
  gather_facts: no
  hosts: localhost
  tasks:
    - name: make nfs_shared directory
      file:
        path: /home/vagrant/nfs_shared
        state: directory
        mode: 0777                          #last 7 for windows system.
    - name: configure /etc/exports
      become: yes
      lineinfile:
        path: /etc/exports
        line: /home/vagrant/nfs_shared/ 192.168.1.0/24(rw,sync)

    - name : nfs service restart
      become: yes
      service :
        name : nfs
        state : restarted

- hosts: CentOS:Ubuntu
  gather_facts: no
  tasks:
    - name: make nfs_client directory
      file:
        path: /home/vagrant/nfs
        state: directory

    - name: mount point direcotry as client
      become: yes
      mount:
        name: /home/vagrant/nfs
        src: 192.168.1.10:/home/vagrant/nfs_shared
        fstype: nfs
        opts: nfsvers=3
        state: mounted


- hosts: Win
  gather_facts: no
  tasks:
    - name: mount feature on
      win_feature:
        name: NFS-Client
        state: present

    - name: mount nfs_shared
      win_command: net use "z:" "\\192.168.1.10/home/vagrant/nfs_shared"

    - name: windows reboot
      win_reboot:
[Continue reading...]
 
Copyright © . 엔지니어를 위한 파이썬 및 기술 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger