javascript

Ещё один пример автоматизации или PowerShell + Google Apps Script

  • воскресенье, 8 апреля 2018 г. в 13:10:49
https://habrahabr.ru/post/353028/
  • PowerShell
  • JavaScript
  • Google API
  • DevOps


Лень — двигатель прогресса…

Вот и я, найдя немного свободного времени, решил автоматизировать достаточно рутинную для каждого админа задачу — создание и отключение пользователей.

1. PowerShell


Началось все с создания скрипта на PowerShell, где с консоли предлагалось ввести данные пользователя. В результате создавался пользователь AD в соответствующем OU, с заполненными полями.



2. Google Apps Script


Далее создаем почтовый ящик, который в моем случае хостится на Gmail. Благодаря этому можно использовать замечательный сервис Apps Script. В его основе лежит JavaScript. Обилие документации и небольшой опыт программирования помог разобраться с этим делом. Здесь аналогично передаем данные функции — аккаунт создан.

Этим же инструментом переделываем шаблон Welcome-письма, заменяя %username% и т.д. на реальные данные и отправляем pdf HR-ам, боссу, новому пользователю и конечно себе.

function createUser(name, lastName, gender, groups, password, title, department) {
  
  var userMail = email((name + "." + lastName).toLowerCase()); 
  var admin = email("admin");
  var recipients = admin + "," + email("hr") + "," + email("boss");
  var subject = "Welcome! " + name + " " + lastName + " - " + title;
  var body = "Welcome to the jungle";
  var attachment = makeWelcome(name, lastName, password);
  
  var resource = {
    "name": {
      "familyName": lastName,
      "givenName": name
    },
    "password": password,
    "primaryEmail": userMail,
    "changePasswordAtNextLogin": true,
    "organizations": [{
      "title": title,
      "department": department
    }],
    "gender": {
      "type": gender
    }
  }
  
  AdminDirectory.Users.insert(resource);  
  Logger.log(userMail + "'S BEEN CREATED");
    
  for (var i = 0; i < groups.length; i++) {
    addMember(groups[i], userMail);
  }  
  
  var options = {
    "attachments": [attachment],
    "name": "Sysadmin"
  }
  
  MailApp.sendEmail(recipients, subject, body, options);
  MailApp.sendEmail(userMail, "Welcome!", body, options);
}

3. UI, автоматизация


Конечно, ввод данных с двух консолей — не тот результат, который хотелось бы получить. По-этому была создана гугл-форма для данных. Скрипты добавлены в планировщик на повтор каждые 5 мин.


После отработки гугл-скрипта, через Backup and Sync (GDrive) данные ввиде текстового файла передаются в локальную сеть. Здесь за дело берется PowerShell — парсит файл и создает пользователя AD. Вот теперь красиво!